上一篇:获取access_token+自定义菜单
这部分代码是之前就已经完成了,但是考虑篇幅的问题就和上篇分开了,这部分相较前面的方式较为复杂一点,但是也是很容易理解的。
这里简单介绍一下微信网页授权。
微信网页授权配置回调域名:
注:下面引自官方文档
1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;
2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com无法进行OAuth2.0鉴权。
比如:需要授权的网页域名为http://xiadd.weixin.qq.com/demo,那么需要配置回调域名为xiadd.weixin.qq.com。其他域名同理。配置图示如下:
在权限里找到这部分,点击修改。
将回调域名改为自己需要的域名:
这样回调域名就修改成功了。
授权登录
关于授权登录的各种参数细节这里就不多说了,但是这里也有一个access_token需要注意一下,和全局缓存的那个注意不要搞混了(话说tx为啥不做一下命名区分)。这里的access_token是oauth的一个凭证,全局缓存的那个是调用微信公众平台各个基础接口所要用到的凭证。
具体而言,网页授权流程分为四步:
1、引导用户进入授权页面同意授权,获取code
2、通过code换取网页授权access_token(与基础支持中的access_token不同)
3、如果需要,开发者可以刷新网页授权access_token,避免过期
4、通过网页授权access_token和openid获取用户基本信息
这里的第三步不是必须的,这里先不提,也就是授权登录主要是三部分。引导用户点击相应链接获取code,code换区access_token,通过access_token去的相应信息。
引导用户获取code
因为授权登录的权限较高,所以微信平台会对链接的顺序进行校验,顺序是固定的。链接格式如下:
https://open.weixin.qq.com/connect/oauth2/authorize"text-align: center">
授权后得到url形式如下。code就包含在url里:
这样code就得到了。code只能使用一次,5分钟未被使用自动过期。
通过code换取网页授权access_token
再次提醒,这里的access_token和全局缓存的access_token是不一样的。具体返回参数请看文档,这里不一一列出了。 对于scope为snsapi_base的授权,这里是最后一步,会返回openid。如果需要再进行下一步。 拉取用户信息 如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。
得到code后,通过get请求https://api.weixin.qq.com/sns/oauth2/access_token"htmlcode">
//getWebToken.js
function getToken(code) {
let reqUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token"text-align: center">
请求方法
http:GET(请使用https协议) https://api.weixin.qq.com/sns/userinfo"htmlcode">