写在前面,这里的微信授权登录,要求:在微信授权后登录之前必须补充手机号码,即绑定手机号码,这与平常的微信授权登录成功以后再到设置中进行手机号码绑定有一些差别。
同时,这里还区别了APP端和PC端的处理,APP端和PC端的处理区别在于从微信获取授权的方式不同而已。
微信官方文档地址:微信官方文档 | 微信开放文档
这里选择开放平台这里我们关注【移动应用】和【网站应用 】,分别对应这移动端和PC网站。
这里拿PC网站举例:
整体的思路就是:
1,向微信申请授权获取code
2,使用code去获取access_token
3,刷新access_token,如果有必要
4,获取用户信息
5,检查access_token是否有效
获取access_token时序图:
首先需要登录微信开放平台:微信开放平台
需要在这里创建移动应该和网站应用,因为要在这里获取到关键的微信授权配置信息appID和appsecret。
第一步:请求CODE
第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在PC端打开以下链接: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与审核时填写的授权域名不一致或scope不为snsapi_login。
返回说明
用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数
redirect_uri?code=CODE&state=STATE
若用户禁止授权,则不会发生重定向。
第二步:通过code获取access_token
通过code获取access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回说明
正确的返回:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}