ThinkPHP中实现微信公众号网页授权功能的步骤如下:
-
首先,需要在微信公众平台中配置授权回调域名,并获取到AppID和AppSecret。
-
在ThinkPHP中,需要在config目录下的wechat.php文件中配置AppID和AppSecret。
-
在控制器中编写获取授权地址的代码,例如:
public function oauth()
{
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . config("wechat.app_id") .
"&redirect_uri=" . urlencode("http://your_domain.com/callback") .
"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
header("location:" . $url);
}
其中,redirect_uri为授权回调地址,需要在公众平台中配置。
-
在回调授权地址的方法中,获取到授权码,并通过授权码获取access_token和openid,例如:
public function callback()
{
$code = input("get.code");
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . config("wechat.app_id") .
"&secret=" . config("wechat.app_secret") .
"&code=" . $code . "&grant_type=authorization_code";
$res = http_get($url);
$res = json_decode($res, true);
$openid = $res["openid"];
$access_token = $res["access_token"];
// 获取用户信息
$url = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $access_token .
"&openid=" . $openid . "&lang=zh_CN";
$res = http_get($url);
$res = json_decode($res, true);
return $res;
}
其中,http_get为自定义的GET请求方法。
-
最后,需要在公众平台中配置网页授权获取用户基本信息的作用域为snsapi_userinfo,才能获取到用户的详细信息。