# 網頁授權
微信網頁授權需要在公眾號后臺設置回調域名。
網頁授權機制有兩種 ``scope`` 類型: ``snsapi_base`` 和 ``snsapi_userinfo,以`` ``snsapi_base`` 發起的網頁授權,不需要用戶手動同意,但只能獲取到 ``Openid``,相反,以 ``snsapi_userinfo`` 發起的授權,需要用戶后動同意,同意后可獲取用戶的 ``Openid``, 昵稱,頭像,性別, 所在的等信息,具體請看官方文檔。
## 業務流程
- 1,檢測業務中的會話狀態(檢測登錄),如果會話中已包含用戶信息(已登錄)則直接到步驟 5,否則步驟 2
- 2,如果當前沒有會話(還沒有登錄),則跳轉到授權頁
- 3,用戶同意授權,頁面將自動跳轉至回調(callback)頁并帶上 code
- 4,通過 code 換取 accessToken 和 openid,獲取用戶信息需要要 accessToken 和 openid,將用戶信息存入會話,再到步驟 5
- 5,跳轉至最終業務頁面
跳轉到授權頁
```php
use Thenbsp\Wechat\OAuth\Client;
$client = new Client($wechat);
$callbackUrl = 'Your callback url';
header('Location: '.$client->getAuthorizeUrl($callbackUrl));
```
根據 Code 換取 AccessToken
```php
$accessToken = $client->getAccessToken($_GET['code']);
```
換取 AccessToken 后,就可以獲 **取已授** 權的用戶信息
```php
$user = $client->getUser();
```
完整流程
```php
use Thenbsp\Wechat\OAuth\Client;
$client = new Client($wechat);
$callbackUrl = 'Your callback url';
if( !isset($_GET['code']) ) {
header('Location: '.$client->getAuthorizeUrl($callbackUrl));
} else {
$accessToken = $client->getAccessToken($_GET['code']);
$user = $client->getUser();
var_dump($accessToken);
var_dump($user);
}
```