小程序开发现在都成了找工作必备武器了
适应时代变化,跟上技术,跟上大公司,也是生存之道啊
小程序要使用,必须登录,这就有个问题,小程序是登录我们的服务器,还是登录微信服务器?
今天周末没啥事干 ,梳理了一下分享给看到的你
登录的切入口
wx.login 方法是一切登录的源,先把官方的流程图展示一下:
整个逻辑流程图非常清晰,可以看到由Login发起之后就可以得到一切了
前端调用login方法,得到了code,传给我们自己的服务器,带着appid、appsecret调用微信服务器接口
成功之后得到session_key、openid
这个openid在很多接口中都有用到,要注意保存
上图提到的自己的登录状态,也就是我们自己服务器端的登录状态,也就是token
很多php开发者都喜欢用token,这个token的生成方式可以有很多种,自行使用就行
随之,就把token返回给前端即可,前端保存后,每次请求带上,后端就知道是谁了
后端也有登录状态
小程序前端的登录状态已经知道了,每次带上token即可
后端跟微信服务器是怎么保持的呢?
php调用auth.getAccessToken接口,获取access_token来保持
同样要带上appid、appsecret去获取
这个access_token是有过期时间的,默认7200s
获取到了之后,也要妥善保管,因为后面接口都要用到这个access_token
微信服务器也是靠这个值来知道我们服务器发的请求是否合法有效的
逻辑清晰
1、前端靠什么保持登录状态?后端获取完openid生成的token
2、后端靠什么保持登录状态?调用auth.getAccessToken得到access_token
问题
access_token有过期时间,过期了怎么办?
当然是再请求一次刷新咯,微信官方给出一个建议:
刷新access_token最好放在中控服务器上,为的就是避免不同服务器都在刷新access_token产生的冲突
比如会出现:access_token一样的情况,造成自己服务器跟微信服务器无法调用的问题
不过,一般情况下如果你只需要一台服务器就能处理应用的话,这个是无需考虑的
如果你的应用比较大,做了很多复杂的服务器配置,需要多台服务器来供应的话,那最好还是另取一台服务器专门负责刷新access_token