微信网页授权需要在公众号后台设置回调域名。
网页授权机制有两种 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,跳转至最终业务页面
跳转到授权页
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);
}