手机版

微信小程序授权登录解密unionId错误方法

时间:2021-08-29 来源:互联网 编辑:宝哥软件园 浏览:

注意:如果不在微信开放平台做开发者资格认证,不要浪费时间。没有认证就拿不到unionId。认证费用300元/年,emmmm.

微信授权登录流程

第一步:wx.login获取用户的临时登录证书代码

第二步:wx.getUserInfo获取encryptedData和解密参数iv

步骤3:将步骤1和2中的代码、加密数据和iv发送到开发人员自己的服务器

第三步:服务器获取代码、加密数据和iv后,用get方法请求如下微信界面

https://api.weixin.qq.com/sns/jscode2session?appid=APPIDsecret=SECRETjs _ code=JSCODEgrant _ type=authorization _ code

Appid: applet appid

秘密:小程序密钥

Js_code:第一步获得的临时登录证书代码

grant_type:“授权_代码”

接口将返回openid,session_key。注意:用户已经授权的平台也会返回unionId。如果你只需要unionId,那就这样。

官方文件声明如下:

EncryptedData、session_key、iv、appid和secret用于解密,无需授权。官方多语言解密示例下载链接:unionId解密示例

包括cpphp pythonnode

第四步:跟着例子解密得到unionId,想干什么就干什么~

以下是授权登录前端代码:

auth log in(){ wx . log in({ success : login RES={ let code=login RES . code//获取用户临时code wx . getuser info({ success 3360 function(RES)){ let encrypted data=RES . encrypted data//获取加密数据let iv=res.iv //解密参数//向服务器wx . request({ URL : ' http://localhost ',methods: ' POST ',data: { code://用户授权的平台会直接返回工会ID。//如果没有授权,用session _ key解密。//解密后,服务器会根据逻辑返回自定义信息。}}}}}})})以上步骤可行,但微信调整了用户授权方式。

新的授权需要使用button组件调用getUserInfo,所以之前无法调用wx.login,但是如果先调用wx.login获取用户信息,解密过程就会出错,猜测代码对应的session_key与之前getUserInfo获取的encryptedData不匹配。

解决方法:

在页面的onLoad生命周期中调用Wx.login,获得的代码存储在数据中,以备需要时使用,但代码的过期时间为5分钟。如果用户在页面停留时间过长后点击授权登录,此时代码已经过期,因此获取代码的函数应该每4分钟左右调用一次。

Wxml按钮授权:

button open-type=' getuser info ' bindtgetserinfo=' auth log in '微信登录/buttonjs:

//获取codeonload :函数(选项){this.getcodetimer ()}。getCodeTimer(){ wx . log in({ success : RES={ this . data . code=RES . code setTimeout(()={ this . getCodeTimer()},4 * 60 * 1000)})},//authorize log in(event){ if(event . detail . errmsg==' getuser info 3360 ok '){ wx . showloading()让req data={ code 3360 this . data . code,encrypteddata : event . detail . encrypteddata。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:微信小程序授权登录解密unionId错误方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。