首先,调用wx.login获取code,判断用户是否授权读取用户信息,调用wx.getUserInfo读取用户数据。
然后,由于小程序后台授权域名无法授权微信的域名,所以我们只能通过我们自己的服务器去调用微信服务器去获取用户信息。
然后,故我们将wx.login获取code和wx.getUserInfo获取的encryptedData与iv通过wx.request请求传入后台。
然后,调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)。
然后,用户数据的加解密通讯需要依赖会话密钥完成,code换取session_key,这是一个HTTPS接口,开发者服务器使用登录凭证code获取session_key和openid。
最后,其中session_key是对用户数据进行加密签名的密钥。为了自身应用安全,session_key不应该在网络上传输。
当我们使用wx.login来使用返回的res.code去换取我们在接口中需要的code值的时候,可能一个页面不止一个地方是需要这个code值的时候,那个时候我们就不应该将获取code的方法直接放在onLoad方法或者组件刚一开始加载的生命周期函数中,这样会出现bug,报出下面这个错误
解决办法:那个部分或者说哪个方法需要这个code值,就直接写在这个方法里面,例如下方(注:如果页面上只有一个地方需要,我们可以写在onLoad中或者单独需要这个code值的方法中。)
1、首先需要一个按钮触发事件。2、其次调用微信小程序的登录接口wx.login,拿到code。
3、然后调用微信小程序的获取用户信息的接口wx.getUserProfile,拿到用户的个人信息。
4、最后拿到的个人信息调用后台的接口,把个人信息传给后台,登录成功并把相关信息存储在本地的缓存中,方便之后的开发使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)