官方文档
准备工作
1、拥有一个已审核通过的网站应用
2、申请微信登录且通过审核
注意:这里不用引用任何 sdk
第一步:请求code
需要用到的链接是:https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
$enter_url = "https://www.baidu.com"; //回调地址,域名必须是你申请的授权回调域
$redirect_uri = urlencode($enter_url);
$data = time();
$state = MD5($data);
$url = "https://open.weixin.qq.com/connect/qrconnect?appid={$appid}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect";
echo "<script>location.href=\"https://open.weixin.qq.com/connect/qrconnect?appid={$this->_appid}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_login&state={$state}#wechat_redirect\";</script>";
注意:这里直接echo,就是直接显示官网二维码,如下:
用户授权登录之后,就会直接跳到对应的回调页面,且在链接上带上了code和state,如下:
注意: 1、上面这种方式是后端直接显示二维码。
2、支持网站将微信登录二维码内嵌到自己页面中,在页面中先引入如下JS文件。
第二步:通过code获取access_token
需要用到的链接:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$appsecret}&code={$code}&grant_type=authorization_code";
$response = $this->client->request('GET', $url);
$body = (string)($response->getBody());
$res = json_decode($body, true);
return $res;
成功返回结果:
失败返回结果:
注意:成功只有一种结果,失败各种各样,可以参考文档的返回码说明
第三步: 获取用户个人信息
需要用到的链接:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
$url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}";
$response = $this->client->request('GET', $url);
$body = (string)($response->getBody());
$res = json_decode($body, true);
return $res;
成功返回结果:
结束。