nodejs微信开发授权登录获取用户信息
上一步:获取访问权_令牌自定义菜单
这部分代码之前已经完成了,但考虑到长度与前一部分是分开的。这部分比上一部分稍微复杂一点,但也很容易理解。
下面简单介绍一下微信网页授权。
微信网页授权配置回调域名:
注:以下内容引自官方文件
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。引导用户进入授权页面同意授权,获取代码2。交换网页授权access_token的代码(与基本支持中的access_token不同)。3.如果需要,开发人员可以刷新网页授权access_token以避免过期。4.通过网页授权access_token和openid获取用户基本信息。引导用户点击相应链接,获取代码、换码区access_token、access_token对应信息。
引导用户获取代码
因为授权登录的权威性高,微信平台会检查链接的顺序,顺序是固定的。链接格式如下:https://open.weixin.qq.com/connect/oauth2/authorize? appid=APPIDredirect _ uri=REDIRECT _ URIresponse _ type=codescope=scope estate=STATE #微信_redirect
appid是固定的,是微信官方账号的appid。重定向uri是成功授权后需要跳转到的链接。response_type是固定的,也就是代码。范围就是授权权限,主要有两种类型:snsapi_base(不弹出授权页面只能获取用户openid)和snsapi_userinfo(弹出授权页面时可以通过openid获取昵称、性别和位置。并且,即使在没有关注的情况下,只要用户被授权,就可以获得信息)。
这里的Scope以snsapi_userinfo为例,获取用户的信息。点击链接进入授权页面。如图所示:
授权后获得的网址如下。代码包含在url中:
然后代码得到它。代码只能使用一次,5分钟不用自动过期。
网页授权访问令牌的交换代码
再次提醒,这里的access_token不同于全局缓存中的access_token。具体返回参数请参考文档,此处未列出。获取代码后,请求https://api.weixin.qq.com/sns/oauth2/access_token?通过get The appid=appid secret=secretcode=codegrant _ type=authorization _ code,参数是appid、appsecret,以及上一步获取的代码,虽然在这里可以通过浏览器进行请求,但是因为安全级别高,请求必须在服务器端进行。代码如下:
//GetWebToken。jsfunction GetToken(代码){ let ReqURl=' https://API。微信。QQ。com/SNS/oauth 2/access _ token ';让params={ appid : config。appid,secret: config.appSecret,code: code,grant _ type : ' authorization _ code ' };让选项={ method: 'get ',URL : ReqURl QS。stringify(params)};控制台。日志(选项。网址);返回新的承诺(解析,拒绝)={请求(选项,函数(err,res,body)} { if(RES)}解析(正文);} else { reject(err);} }) })}就是很简单的一个请求得到想要的数据。但是注意得到的数据是个字符串,需要进行处理,响应格式如下:
对于范围为snsapi_base的授权,这里是最后一步,会返回openid。如果需要再进行下一步。
拉取用户信息
如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过访问令牌和信息拉取用户信息了。请求方法http:GET(请使用安全超文本传输协议协议)https://api.weixin.qq.com/sns/userinfo?ACCESS _ token=ACCESS _ token OpenID=Openidlang=zh _ CN这里也很简单。直接看代码:
函数getUserInfo(AccessToken,OpenID){ let ReqURl=' https://API。微信。QQ。com/SNS/UserInfo ';let params={ access _ token : AccessToken,openid: openId,lang : ' zh _ CN ' };让选项={ method: 'get ',URL : ReqURl QS。stringify(params)};返回新的承诺(解析,拒绝)={请求(选项,函数(err,res,body)} { if(RES)}解析(正文);} else { reject(err);} });})}具体响应到网页上如图所示:
这样就通过授权登录拉取到了用户信息。
开源代码库地址奉上:https://github。com/xiadd/速记欢迎星星
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
版权声明:nodejs微信开发授权登录获取用户信息是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

















