现在遇到的情况是:
不同主体要获取UnionId
但是一定要用户授权,然后一定得用 button 的 open-type="getUserInfo" ,成功后通过 bindgetuserinfo="onGotUserInfo" 获得登录加密数据,但是这个加密数据是需要code去解的,但是wx.login不能写在 onGotUserInfo 里面啊,至此,逻辑是不是错了。
现在的逻辑是:
wx.login -> button -> code和加密数据 -> 解密
正确的逻辑应该是这样吧?
button -> wx.login -> code和加密数据 -> 解密
当前的解决方案该怎么办? 用户点登录按钮前事先给他生成好 code 吗?
session未过期情况下login会刷新登录态,导致sessionKey发生变化。
稳妥的方案是在用户点击授权后,先checkSession,如果未过期,不login,服务器可以用之前的sessionKey解密。如果session过期,需要重新login,使用新的sessionKey解密,这时login code换取的sessionKey和加密userInfo的是同一个。
你这个方案是针对旧用户而言吧?
创建新用户之前怎么会有sessionkey呢?这个用户是第一次进的小程序啊~
新用户等同于session过期,重新login获取sessionKey就好