nodejs-微信公众号授权验证及获取微信用户信息-随笔

在前面开发中,产品提出一个需求,在用户访问移动端页面时需要先微信授权且登录个人中心时展示用户账号信息和微信昵称,头像等信息且一个账号,很简单吧,我摔,好多坑啊。

看了一番微信开发文档,发现需求的中心点在于微信用户信息中有一个中心点 openid 

功能以这个为中心进行环绕开发,验证是否授权逻辑清晰我就不提及了

首先我需要用户微信授权获取openid与用户账户绑定以实现个人中心获取对应账号的微信信息

在此开发我使用的是snsapi_base静默授权,前提是要先在公众平台设置网页授权选项

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。

当用户点击菜单进入网页时可以通过window.location.href重定向上面的连接,微信服务器会返回一个code,

有两点要注意:

1:重定向回调链接地址需要编码处理,可以使用urlencode插件进行编码返回一个编码后的地址作为回调

2:有时候会出现返回的code过期,大部分是客户端和微信方同时带code请求服务器两次造成第一次请求终止或code被使用

解决方式:1:逻辑中对已有的code不进行重复操作 2:在回调地址中加个参数 &connect_redirect=1

继续使用获得的code调用接口获取微信openid

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

openid基本就得手了,建议在业务层进行获取操作,推荐使用axios和request

然后是使用openid获取用户信息,关键要使用全局access_token

http请求方式: GET

https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

微信公众号开发者文档链接:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839

猜你喜欢

转载自blog.csdn.net/yshx_zz/article/details/88526868