公司新闻

公司新闻

小程序开发必选题 你能不能做对?

发布时间: 2022-06-03 16:17        有 人围观

对于小程序开发者而言,如何标识一个用户的登录状态?
 
紫竹云科技微信团队提供 2 种标识方式:OpenId 和 UnionId。每个用户在同一个小程序内拥有唯一的 OpenId 和 UnionId,该 2 项 ID 仅限于标记用户登录状态,不涉及任何用户头像、昵称、手机号等隐私信息。只要用户再次进入小程序,开发者仍然能够标识用户的登录态,例如大家在使用防疫健康码过程中,登录态标识能够实现无需每次手动登录,便利使用流程。作为登录态标识方式,通过 wx.login 实现 静默登录 成为小程序开发过程中不可缺少的业务场景。然而,这项小程序开发的 “必选题” 需要什么 “解题技巧” ?你是否已经掌握?以下内容详细分享静默登录的那些事儿——

 

 
 
 

静默登录原理是什么

静默登录方式主要是通过以下 3 个步骤完成:

  1. 小程序端调用 wx.login() 获取临时登录凭证 code ,并回传到开发者服务器

  2. 服务器端调用 auth.code2Session 接口,换取用户唯一标识 OpenId 和会话密钥 sessionKey,关联生成自定义登录态 auth-token,并为每一位用户分配唯一的用户 id (uid),初始化用户信息

  3. 开发者服务器将根据用户标识生成的自定义登录态 auth-token 和用户信息返回给小程序端,小程序接收并存储到本地

 

 

 
 
 

如何应用静默登录

Step 1: 启动时调用 authLogin.login

如果每次启动小程序都重新发起静默登录,必然阻塞部分核心业务请求。因此只要保证登录态仍然有效,当用户再次进入小程序时,就无需发起静默登录流程。

 

登录态有效的判断依据有两点:一是本地 storage 中是否存在 auth-token;二是调用 wx.checkSession 判断 sessionKey 是否过期。

 

当用户启动小程序时,主要有以下 4 种场景:

 

 

根据场景,封装 login 函数供小程序启动时 onLaunch 生命周期调用。如下图所示,判断本地是否存在 auth-token 以及 sessionKey 是否过期,如果存在且未过期,则将状态机状态扭转到成功,返回 Promise.resolve()。否则,发起静默登录流程。