长风破浪会有时
直挂云帆济沧海

nodejs与小程序/公众号实现微信授权操作.

    由于之前微信授权登录时是直接可以通过微信开放接口getUserInfo弹出授权弹窗。由于近期微信官方修改了getUserInfo接口,为优化用户体验,使用 wx.getUserInfo接口直接弹出授权框的开发方式将逐步不再支持。所以现在无法一进入微信小程序就弹出授权窗口,只能通过button去触发。而后端主要是需要前端的code来进行获取微信授权。

let oneData = await wxLogin.requests('https://api.weixin.qq.com/sns/jscode2session?appid=' + yourappid + '&secret=' + yourappsecret + '&js_code=' + 前端传来的code + '&
 grant_type=authorization_code');

  通过上面接口,可以获取到用户的openid以及session_key,然后通过前端传来的encryptedData以及iv进行解密,

let crypted = new Buffer(yourencryptedData, 'base64');
 let key = new Buffer(yoursession_key, 'base64');
 let iv = new Buffer(youriv, 'base64');
 const decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
 decoded = decipher.update(crypted, 'base64', 'utf8');
 decoded += decipher.final('utf8');
 decryptedData = JSON.parse(decoded);

  然后,就可以获取微信的用户信息了,可以进行存到数据库,下次登录,就不需要获取用户信息了。

而当进行了一次授权获取信息之后,前端将不会在传encryptedData以及iv。后端可以进行判断操作,如果只传了code,证明该用户已经存有资料到数据库了。直接通过openid去取用户信息就可以了。而如果传了encryptedData以及iv,就要重新存值了。

赞(1) 打赏
未经允许不得转载:阿锋哥前端开发经验分享 » nodejs与小程序/公众号实现微信授权操作.
分享到: 更多 (0)

几百块就能做营销型企业网站?

查看详情

可怜可怜作者吧

支付宝扫一扫打赏

微信扫一扫打赏