手机版

微信小程序维护登录状态 获取用户信息

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

前言,

微信小程序的运行环境不在浏览器下运行。因此,cookie无法维护登录状态。我来说说我写的按照官方方法维护登录状态的方法。

一、登录状态维护

正式文件地址:https://mp.weixin.qq.com/debug/wxdoc/dev/API/API-login.html # wxloginobject

通过wx.login()获取用户登录状态后,需要维护登录状态。开发者需要注意的是,session_key、openid等字段不应该直接作为用户的标识或会话标识,而应该自己发送一个会话登录状态(请参考登录时序图)。对于开发人员自己生成的会话,应该保证它的安全性,不应该设置很长的过期时间。在会话被分派到applet客户端之后,它可以被存储在存储器中,用于随后的通信。

登录时序图

微信小程序维护登录态与获取用户信息(图1)

从上图可以看出。当我们通过wx.login()获取代码时,我们将其发送到我们的服务器,然后要求微信服务器获取相应的openid和session_key。openid是模板通知等小程序中用户的唯一标识符。Session_key用于解密用户的敏感信息。Unionid什么的。Unionid是所有微信平台上微信用户的唯一标识。我会解释如何得到它。

微信小程序维护登录态与获取用户信息(图2)

以上就是我的实现方法。在调用wx.login()获取代码后,请求服务器获取openid和session_key,并将它们缓存在服务器中。其中,生成的随机数为key,值为openid和session_key。然后返回到小程序,并通过wx.setstoragesync(登录会话密钥,获得的随机数密钥)将其缓存在小程序中。每当我们请求服务器时,我们可以将LoginSessionKey带到服务器上读取,以确定用户是否正在登录。是不是很简单?

第二,用户数据的加密和解密

通过wx.login()登录后。我们可以通过wx.getUserInfo()获取用户信息。在返回的结果中,用户信息中包含一些不敏感的信息。如果你想获取敏感信息。Openid、unionid等等。它需要从密文中解密。

密文在加密数据字段中。我们要求我们的服务器解密,然后获得敏感信息,这些信息可以保存。

如果

加密数据解密算法

接口涉及敏感数据(如wx.getUserInfo中的openId和unionId),则该接口的明文内容不会包含这些敏感数据。如果开发人员需要获取敏感数据,他们需要对接口返回的encryptedData进行对称解密。解密算法如下:

用于对称解密的算法是AES-128-CBC,数据用PKCS#7填充。对称解密的目标密文为Base64_Decode(encryptedData),对称解密密钥Aeskey=Base64 _ Decode(session _ key),Aeskey为16字节对称解密算法。初始向量iv将在数据接口中返回。微信官方提供各种编程语言的样例代码(点击下载)。每种语言类型的接口名称都相同。调用方法可以参考示例。

版权声明:微信小程序维护登录状态 获取用户信息是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。