https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.checkSession.html
在功能描述部分:
登录态过期后开发者可以再调用 wx.login 获取新的用户登录态。调用成功说明当前 session_key 未过期,调用失败说明 session_key 已过期。
主要问题:上面这段描述。前面说明了wx.checkSession这个API调用后会获得身份是否失效的状态。后面紧接着告知失效后可以再调用 wx.login 获取新的用户登录态,
但之后紧跟着就是说调用成功 说明session_key 未过期,调用失败说明 session_key 已过期。 (这句话是描述wx.checkSession的。但紧跟在wx.login调用需求后。容易混淆概念)
会给人一个错觉。认为调用wx.login 成功或失败 代表session_key过期或未过期。 此处应该加一个换行。或者直接带上wx.checkSession或 当前API调用成功说明当前session_key 未过期,调用失败说明 session_key 已过期。
花了几分钟,才理解这里面的事情。还特意又去翻了一下 wx.login api 的描述。。。希望可以将文档完善的更好。
我觉得对于初学者容易混淆,其实这里面有2个概念,一个是wx.login(),另一个是session_key。
混淆点在于登录态失效过期和session_key失效过期需要重新获得session_key,这2个东西是什么关系?
调用wx.login()时,微信服务器会返回一个code,这时你是处于登录的状态,开发者拿着code,再发送请求到微信服务器去换取新的session_key;
因为session_key会过期,所以提供了wx.checkSession方法来验证session_key是否过期,那么sesssion_key过期怎么办,重新调用wx.login()方法获得新的code,因为拿到code才能去微信服务器获得新的session_key。
用验证session_key是否过期的方法来表示登录是否过期,然而,只要session_key不过期,无需重新调用wx.login()。
补充:官方说即使session_key没有失效,生新调用wx.login()方法获得新的code,也会造成session_key过期失效。(不对的地方请大神指教:)。。。)
确实
官方文档登录这块的逻辑巨乱,哪有清楚的说明?