Session_Key
小程序用户身份的唯一性基于openid判断,多平台情况下使用unionid(也是唯一的)
openid——每个用户在某个微信公众号的账户(唯一的)
那么如果同一个公司有多个公众号,他希望多个公众号之间用户的账号可以通用,于是,微信提供一种打通机制,就是使用同一个账户可以登录多个公众号,就是unionid,
官方说明
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
获得了开放平台认证的企业,可以绑定10个手机应用、10个网站、10个公众号,他们对应的用户信息也可以互联互通。
注意:
对于开发团队而言,在接入微信登录之初,往往会忽视用户的UnionID,
只记录了openid。
这会导致后期账号打通时候,需要用户重新授权
在实际应用中使用到sessionKey的场景的并不多,比如获取用户的openid或者unionid,具体方法如下
wx.login({
success: function(res) {
console.log(res.code) //这就是code
});
开发者需要将 code 发送到开发者服务器后台,使用code 换取 session_key api,将 code 换成 openid 和 session_key .,不在网络传输,建立自己的SesstionID和生成的SessionKey的对应关系。然后把生成的SessionID传输到小程序客户端,在小程序本地缓存。
获取手机号需要用到有效 的SessionKey,SessionKey有个过期时间,要注意的问题就是解密用的SessionKey和与加密用的SessionKey是不是同一个,有的时候可能会出现有时候能解密,有时候不行。
小程序提供wx.checkSession()来检查SessionKey有没有过期,如果已经过期,就重新wx.login()