小程序登录适配方案说明
WARNING
请注意,当前域名 https://dev.weixin.qq.com/docs/framework
文档已不维护,请前往微信文档中心 找到对应的新文档继续使用
App 的登录方式,一般是手机号登录、微信登录等。 而微信小程序的登录方式,一般是在小程序端调用 wx.login
获取 code
,然后在服务端验证的方式来实现登录。 基于此背景,本产品提供以下两类多端应用适配小程序登录方案。
一、后台服务零改动方案
考虑到部分开发者已有一套基于 wx.login
的前端代码和对应的后台服务,开发者可以选择以下两种适配方法。 目标是开发者只需少量的前端代码改动,服务端代码零改动,即可在多端应用中实现登录能力。
查看接入指引
使用登录页模板
小程序代码改造量:
- 将小程序代码中的
wx.login
替换成wx.getMiniProgramCode
时序图如下:
流程说明
- 系统登录态由多端基础库自动维护
- 如果系统登录态不存在,则
wx.getMiniProgramCode
会唤起微信小程序,用户登录成功后,返回小程序 code
。(注:多端基础库会自动生成并维护系统登录态,30 天内有效) - 如果系统登录态存在,则
wx.getMiniProgramCode
会立刻返回小程序 code
- 如果系统登录态不存在,则
- App 登录页官方提供模板 (微信开发者工具-资源管理器-选择文件夹并点击右键-新建多端登录 Page),开发者需要自己选定路径放到代码包内,并在
App.miniApp.json
中配置如下信息:
// App.miniApp.json
{
"identityServiceConfig":
{
"authorizeMiniprogramType": 1, // 可指定跳转小程序版本(0:正式版,1:开发版,2:体验版)
"miniprogramLoginPath": "/pages/donutLogin/donutLogin" // 需改成业务选定的路径
}
}
- 小程序授权页由官方提供,开发者需要在
App.json
中配置如下信息。
// App.json
{
"miniApp": {
"useAuthorizePage": true
}
}
注意:官方模板提供的 App 登录页仅支持小程序登录成功后调用 wx.getMiniProgramCode
。
自定义登录页
适用场景:开发者有自定义小程序登录页的需求
小程序代码改造量:
- 实现自定义小程序登录页,当用户登录时调用
wx.weixinMiniProgramLogin
- 将小程序代码中的
wx.login
替换成wx.getMiniProgramCode
时序图如下:
流程说明
- 前置调用 wx.weixinMiniProgramLogin 并登录成功,30天内如果调用 wx.getMiniProgramCode 可以静默获取到
小程序 code
二、支持多种登录方式方案
适用场景:开发者有支持多种登录方式的需求
小程序代码改造量:
- 实现自定义登录页,通过本产品提供的各类登录方法进行用户登录。
- 将小程序代码中的
wx.login
替换成wx.getIdentityCode
后台服务代码改造量:
- 接收前端登录成功后获得的 code (由
wx.getIdentityCode
或wx.xxxLogin
返回),通过 code2Verifyinfo 向微信获取用户标识信息。 - 返回小程序自定义登录态。
时序图:
该方案时序图可参考多端应用登录时序。
流程说明
- 前置调用 wx.xxxLogin 并登录成功,30天内如果调用 wx.getIdentityCode 可以静默获取到用于 code2Verifyinfo 的
code
。因此,开发者可以全量替换小程序代码中的wx.login
为wx.getIdentityCode
以并保持静默登录的用户体验。