微信授权使用的是OAuth2.0授权的方式。主要有以下简略步骤:
1.用户同意授权,获取code
2.通过code换取网页授权access_token
3.刷新access_token(如果需要)
4.拉取用户信息(需scope为 snsapi_userinfo);
用户拉取授权的时候会用到以下参数:
appId
为申请到的微信服务号appId,
redirect_uri
开发者提供的空白中转页,也就是微信会给你code之后,再跳转到此第三方页面获取openid;此页面必须要通过encodeURI转码;
response_type=code
微信会通过返回值给的code再去请求用户的openid;
scope
有2个值,snsapi_base(不弹出授权页面,直接跳转,只能获取用户openid);snsapi_userinfo(弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息);
component_appid
第三方平台appId,自由参数,非必带参数;
'#wechat_redirect':
直接在微信打开链接,可以不填此参数。做页面302重定向时候,必须带此参数;
用户请求下面的url链接:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_userinfo&state=123&component_appid=${componentAppid}#wechat_redirect;
当用户点击该链接的时候,微信会弹出授权页面,当用户确认授权后,微信会回调到上面链接的redirect_uri并且将code拼接到此url后面,如下:
http://www.xxxx.com?code=12334566778
在该页面中code是微信返回的一串字符串,且使用一次后即失效。
在redirect_uri中需要前端开发者拿到code值并连同appid发给后端请求到openid,就算授权成功了。