小程序:授权、登录、session_key、openid


从上图中,我们可以看出,小程序中登录步骤如下:

① 小程序前端使用wx.login() 从微信服务器获取code

② 小程序前端将code 发送给开发者服务器,开发者服务器利用appId、appSecret 和code 向微信服务器换换取用户openId 和session_key

③ 开发者服务器自定义登录态并将其与openId 和session_key 关联起来然后写session

④ 开发者服务器将登录态返回给小程序前端,小程序前端使用wx.setStorageSync() 将登录态保存起来

⑤ 小程序前端在执行业务请求时将登录态发送给开发者服务器,以便开发者服务器知道当前操作的用户是哪位。

也就是说,在整个过程中小程序前端是拿不到用户openId 的,它只能通过开发者服务器发给它的登录态来告诉服务器当前用户的信息。登录过程中涉及session_key 和unionId,于是又引出了下面的问题。

  1. session_key 的作用

session_key 的作用之一是将小程序前端从微信服务器获取到的encryptedData 解密出来,获取到openId 和unionId 等信息
从文档中可以看到getPhoneNumber 返回的用户数据是加密过的,只有使用session_key 才能解密,而小程序前端没有session_key,所以无法获取到用户的手机,只能传到开发者服务器进行处理。

原文地址:https://www.cnblogs.com/whnbky/p/13638622.html