by addy 原创文章,欢迎转载,但希望全文转载,注明本文地址。

本文地址:http://www.iamaddy.net/2017/06/wechat-wapp-login/

先看遇到的问题,在PC的微信开发工具上,调试开发我们的小程序。然后用手机扫描在手机上预览,这时候发现后台数据并不能成功返回。

也就是说在PC切换手机的时候,登录态是失效的。

我们来看小程序的登录时序图: 微信小程序登录态问题

简化说明下:

  • 1、wx.login得到code
  • 2、我们自己后台拿code调用微信后台接口,得到session_key
  • 3、我们自己后台加密session_key,得到3rd_session_key
  • 4、前端存储3rd_session_key,每次请求带上它。

有几点注意:

  • 1、wx.login,返回的code,有效期五分钟。
  • 2、wx.login,每调用一次会导致前面的失效。
  • 3、wx.login,用过之后就失效了。
  • 4、我们的3rd_session_key是唯一性。

session会话的唯一性是指什么呢?就是用户只能在一个终端与服务器保持会话。就像一个微信号,只能在一个手机上登录。

所以就出现了刚开始的问题。当从开发环境PC电脑,切换到手机预览的时候,登录态是失效了。这个时候怎么办?

当然是保证后登录的有效。而且wx.login返回的 code也不能用了。

所以当调用后台的CGI接口的时候,返回了登录态失效的错误码:一切从头开始,重复我前面讲的换票据的流程。

这样才能保证切换终端的时候,保证能够正常。

说句题外话,没有cookie的小程序,暴露出一个缺点,要得到后台的数据时间成本也很大。

wx.login —— 换取session_key —— 换取3rd_session_key —— 业务CGI请求——渲染数据

这个五个步骤都是有网络耗时的,感觉上还是挺费时间。具体没统计,可以下回分析。

以上。

本文为原创文章,可能会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,谢谢合作

本文地址:http://www.iamaddy.net/2017/06/wechat-wapp-login/

个人知乎,欢迎关注:https://www.zhihu.com/people/iamaddy

欢迎关注公众号【入门游戏开发】 入门游戏开发