传统登录方式的局限性
在传统的登录功能实现中,用户通常需要输入账,或者通过手机及验证码进行登录。服务端在验证用户信息通过后,会下发一个代表登录态的令牌给客户端,以便后续的交互。然而,这种登录方式存在一个明显的缺点:每当登录态过期,用户都需要重新登录,这不仅增加了用户的操作步骤,也影响了用户体验。
微信小程序登录的优势
相比之下,微信小程序通过微信官方提供的登录能力,可以方便地获取微信提供的用户身份标识,从而快速建立小程序内的用户体系,实现登录功能。这种方式不仅简化了登录流程,还提高了用户的使用体验。
微信小程序用户体系的实现
实现小程序用户体系主要涉及到两个关键概念:code
和openid
。
-
生成
code
:通过调用wx.login()
方法生成code
,将这个code
作为参数传递给微信服务器的指定接口,就可以获取用户的openid
。 -
用户唯一标识:对于每个小程序,微信都会将用户的微信
openid
映射出一个小程序openid
,作为这个用户在这个小程序的唯一标识。
登录逻辑的详细流程
微信小程序的登录逻辑可以通过以下流程图来展示:
登录逻辑流程图.
登录态过期的处理
在实际业务中,我们还需要处理登录态是否过期的问题。通常的做法是在登录态(临时令牌)中保存有效期数据,该有效期数据应该在服务端校验登录态时和约定的时间(如服务端本地的系统时间或时间服务器上的标准时间)做对比。
这种方法需要将本地存储的登录态发送到小程序的服务端,服务端判断为无效登录态时再返回需重新执行登录过程的消息给小程序。
另一种检查登录态的方式
另一种方式是通过调用wx.checkSession
来检查微信登录态是否过期:
- 如果过期:则发起完整的登录流程。
- 如果不过期:则继续使用本地保存的自定义登录态。
这种方式的好处是不需要小程序服务端来参与校验,而是在小程序端调用,流程如下所示:
调用wx.checkSession
.
总结
通过微信小程序提供的登录能力,我们可以更加高效地实现用户登录功能,提升用户体验。同时,合理处理登录态过期问题,也能确保用户在使用小程序时的流畅性和安全性。