Skip to content

Latest commit

 

History

History
56 lines (38 loc) · 1.79 KB

oauth.md

File metadata and controls

56 lines (38 loc) · 1.79 KB

网页授权

微信网页授权需要在公众号后台设置回调域名。

网页授权机制有两种 scope 类型: snsapi_basesnsapi_userinfo,以 snsapi_base 发起的网页授权,不需要用户手动同意,但只能获取到 Openid,相反,以 snsapi_userinfo 发起的授权,需要用户后动同意,同意后可获取用户的 Openid, 昵称,头像,性别, 所在的等信息,具体请看官方文档。

业务流程

  • 1,检测业务中的会话状态(检测登录),如果会话中已包含用户信息(已登录)则直接到步骤 5,否则步骤 2
  • 2,如果当前没有会话(还没有登录),则跳转到授权页
  • 3,用户同意授权,页面将自动跳转至回调(callback)页并带上 code
  • 4,通过 code 换取 accessToken 和 openid,获取用户信息需要要 accessToken 和 openid,将用户信息存入会话,再到步骤 5
  • 5,跳转至最终业务页面

跳转到授权页

use Thenbsp\Wechat\OAuth\Client;

$client = new Client($wechat);

$callbackUrl = 'Your callback url';

header('Location: '.$client->getAuthorizeUrl($callbackUrl));

根据 Code 换取 AccessToken

$accessToken = $client->getAccessToken($_GET['code']);

换取 AccessToken 后,就可以获 取已授 权的用户信息

$user = $client->getUser();

完整流程

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);
}