微信登录说明
WARNING
请注意,当前域名 https://dev.weixin.qq.com/docs/framework
文档已不维护,请前往微信文档中心 找到对应的新文档继续使用
在多端应用中,开发者可通过如下 3 个 api 实现微信登录:
接口名称 | 功能介绍 | 其他说明 |
---|---|---|
wx.login | - 该接口用于在 App 中跳转至小程序进行登录,登录后再返回 App - 该接口返回的 jscode ,可通过小程序的 jscode2session 接口获取用户在小程序中的 openid 以及 unionID(如果该小程序绑定于微信开放平台账号) - 该接口只适用于开发版,不可作为正式版解决方案 | - 需先注册微信开放平台移动应用账号 - 可在移动应用助手中进行测试 |
wx.miniapp.login | - 该接口是移动应用微信登录功能的封装,用户前往微信 App 授权后即可获取code - 该接口返回的 code ,可通过移动应用的/sns/oauth2/access_token 接口获取用户在 App 中的 openid 以及 unionID - 通过 unionID 可以将用户在 App 上的身份和小程序身份关联起来 | - 需先注册微信开放平台移动应用账号 - 不可在移动应用助手中进行测试,请构建安装包至真机进行测试 |
wx.weixinAppLogin | - 该接口是基于移动应用微信登录功能结合多端身份管理封装的,用户前往微信 App 授权后即可获取 code - 该接口返回的 code ,可通过多端身份管理的code2Verifyinfo 接口获取用户在 App 中的 openid - 基于该接口进行微信登录,可在多端应用中使用云开发的能力 | - 需先注册微信开放平台移动应用账号 - 需开通多端身份管理功能 - 不可在移动应用助手中进行测试,请构建安装包至真机进行测试 |
一、注册移动应用账号
- 3 个接口均需开发者先注册微信开放平台移动应用账号,如果已有移动应用账号,则可跳过此步骤;如尚未有移动应用账号,可参考此章节步骤完成创建以及审核。
1、注册微信开放平台账号
- 前往微信开放平台完成注册,详细操作指南可查看微信开放平台注册指引
2、创建移动应用账号
- 登录微信开放平台,然后前往「管理中心-移动应用」
- 点击「创建移动应用」,然后填写移动应用名称、简介、官网、图标等基本信息以及开发信息,然后提交审核即可
- 等待审核通过后,即可在「管理中心-移动应用-应用详情」中查看该移动应用的 AppID 信息 (调用接口时需用到)
二、wx.miniapp.login
1、使用说明
- wx.miniapp.login 基于 OpenSDK,关联的是微信开放平台移动应用 AppID,最后获取的是用户在 App 中的 openid
- 如果需要关联小程序的 openid 信息,可将小程序绑定在微信开放平台中,从而获取 unionID,通过 unionID 将移动应用和小程序应用关联起来。
- 前往查看接口详情
2、初始化配置
使用微信开放能力前,需要先完成初始化配置
- 前往查看微信移动应用能力初始化指引
3、调用示例
示例:
// login
wx.miniapp.login({
success: (res) => {
console.log('login success:', res.code)
}
})
三、wx.login
1、使用说明
- 该接口只适用于前期快速调试阶段,不可作为 App 登录的正式方案,建议可是使用 wx.miniapp.login 或者 wx.getMiniProgramCode
- 在开发调试阶段,可在移动应用助手中进行体验测试 wx.login;不支持开发者构建安装包安装至手机进行调试的场景。
2、使用步骤
在微信开发者工具中使用“升级为多端项目”能力的时候,工具会帮开发者自动生成 app.miniapp.json 这个文件,并填入要跳转的微信小程序对应的信息。
app.miniapp.json 文件在小程序项目 miniprogramRoot 目录下配置,内容已自动配置完成,开发者无需调整 :
{
"adapteByMiniprogram": {
"userName": "xxxx", // 小程序原始id(不是小程序appid)// 且该字段默认会填好,开发者无需调整
}
}
- 此外,当多端应用在调用 wx.login 接口,其中的基础库已经进行了兼容逻辑的实现,让开发者无需感知变化。跳转到目标微信小程序的特定页面,特定页面内部会执行,并执行微信小程序内 wx.login 接口,最后将返回的code内容传回多端小程序。最后在多端小程序的 wx.login 的 success 接口中返回微信小程序传回的 code。从而让开发者继续按照原来的方式调用 wx.login,无需改变业务逻辑。