小程序登录适配方案说明

WARNING

请注意,当前域名 https://dev.weixin.qq.com/docs/framework 文档已不维护,请前往微信文档中心open in new window 找到对应的新文档继续使用

App 的登录方式,一般是手机号登录、微信登录等。 而微信小程序的登录方式,一般是在小程序端调用 wx.login 获取 code,然后在服务端验证的方式来实现登录。 基于此背景,本产品提供以下两类多端应用适配小程序登录方案。

一、后台服务零改动方案

考虑到部分开发者已有一套基于 wx.login 的前端代码和对应的后台服务,开发者可以选择以下两种适配方法。 目标是开发者只需少量的前端代码改动,服务端代码零改动,即可在多端应用中实现登录能力。

查看接入指引

使用登录页模板

小程序代码改造量:

  1. 将小程序代码中的 wx.login 替换成 wx.getMiniProgramCode

时序图如下:

流程说明

  1. 系统登录态由多端基础库自动维护
    • 如果系统登录态不存在,则 wx.getMiniProgramCode 会唤起微信小程序,用户登录成功后,返回 小程序 code。(注:多端基础库会自动生成并维护系统登录态,30 天内有效)
    • 如果系统登录态存在,则 wx.getMiniProgramCode 会立刻返回 小程序 code
  2. App 登录页官方提供模板 (微信开发者工具-资源管理器-选择文件夹并点击右键-新建多端登录 Page),开发者需要自己选定路径放到代码包内,并在 App.miniApp.json 中配置如下信息:
// App.miniApp.json
{
    "identityServiceConfig":
    {
        "authorizeMiniprogramType": 1, // 可指定跳转小程序版本(0:正式版,1:开发版,2:体验版)
        "miniprogramLoginPath": "/pages/donutLogin/donutLogin" // 需改成业务选定的路径
    }
}
  1. 小程序授权页由官方提供,开发者需要在 App.json 中配置如下信息。
// App.json
{
  "miniApp": {
    "useAuthorizePage": true
  }
}

注意:官方模板提供的 App 登录页仅支持小程序登录成功后调用 wx.getMiniProgramCode

自定义登录页

适用场景:开发者有自定义小程序登录页的需求

小程序代码改造量:

  1. 实现自定义小程序登录页,当用户登录时调用 wx.weixinMiniProgramLogin
  2. 将小程序代码中的 wx.login 替换成 wx.getMiniProgramCode

时序图如下:

流程说明

  1. 前置调用 wx.weixinMiniProgramLogin 并登录成功,30天内如果调用 wx.getMiniProgramCode 可以静默获取到 小程序 code

二、支持多种登录方式方案

适用场景:开发者有支持多种登录方式的需求

小程序代码改造量:

  1. 实现自定义登录页,通过本产品提供的各类登录方法进行用户登录。
  2. 将小程序代码中的 wx.login 替换成 wx.getIdentityCode

后台服务代码改造量:

  1. 接收前端登录成功后获得的 code (由 wx.getIdentityCodewx.xxxLogin 返回),通过 code2Verifyinfo 向微信获取用户标识信息。
  2. 返回小程序自定义登录态。

时序图:

该方案时序图可参考多端应用登录时序

流程说明

  1. 前置调用 wx.xxxLogin 并登录成功,30天内如果调用 wx.getIdentityCode 可以静默获取到用于 code2Verifyinfocode。因此,开发者可以全量替换小程序代码中的 wx.loginwx.getIdentityCode 以并保持静默登录的用户体验。