# 微信登录说明

在多端应用中，开发者可通过如下 3 个 api 实现微信登录：

| 接口名称 | 功能介绍 |其他说明 |
| -- | -- |-- |
| wx.login | - 该接口用于在 App 中跳转至小程序进行登录，登录后再返回 App 
 - 该接口返回的 jscode，可通过小程序的[小程序登录凭证校验](/miniprogram/dev/server/API/user-login/api_code2session.md)接口获取用户在小程序中的 openid 以及 unionID（如果该小程序绑定于微信开放平台账号）
 - 该接口只适用于开发版，不可作为正式版解决方案|- 需先注册微信开放平台移动应用账号 
 - 可在移动应用助手中进行测试|
| wx.miniapp.login | - 该接口是[移动应用微信登录](/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.md)功能的封装，用户前往微信 App 授权后即可获取code 
 - 该接口返回的 code，可通过移动应用的[/sns/oauth2/access_token](/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.md) 接口获取用户在 App 中的 openid 以及 unionID
 - 通过 unionID 可以将用户在 App 上的身份和小程序身份关联起来|- 需先注册微信开放平台移动应用账号 
 - 不可在移动应用助手中进行测试，请构建安装包至真机进行测试|
| wx.weixinAppLogin | - 该接口是基于[移动应用微信登录](/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.md)功能结合[多端身份管理](/miniprogram/dev/platform-capabilities/miniapp/intro/auth)封装的，用户前往微信 App 授权后即可获取 code 
 - 该接口返回的 code，可通过多端身份管理的[code2Verifyinfo](/miniprogram/dev/platform-capabilities/miniapp/openapi/code2Verifyinfo) 接口获取用户在 App 中的 openid 
 - 基于该接口进行微信登录，可在多端应用中使用云开发的能力|- 需先注册微信开放平台移动应用账号
 - 需开通多端身份管理功能 
 - 不可在移动应用助手中进行测试，请构建安装包至真机进行测试|

## 一、注册移动应用账号

- 3 个接口均需开发者先注册微信开放平台移动应用账号，如果已有移动应用账号，则可跳过此步骤；如尚未有移动应用账号，可参考此章节步骤完成创建以及审核。

### 1、注册微信开放平台账号

- 前往[微信开放平台](https://open.weixin.qq.com/)完成注册

### 2、创建移动应用账号

- 登录[微信开放平台](https://open.weixin.qq.com/)，然后前往「管理中心-移动应用」
- 点击「创建移动应用」，然后填写移动应用名称、简介、官网、图标等基本信息以及开发信息，然后提交审核即可
- 等待审核通过后，即可在「管理中心-移动应用-应用详情」中查看该移动应用的 AppID 信息 （调用接口时需用到）

## 二、wx.miniapp.login

### 1、使用说明

- wx.miniapp.login 基于 OpenSDK，关联的是微信开放平台移动应用 AppID，最后获取的是用户在 App 中的 openid
- 如果需要关联小程序的 openid 信息，可将小程序绑定在微信开放平台中，从而获取 unionID，通过 unionID 将移动应用和小程序应用关联起来。
- 前往查看[接口详情](/miniprogram/dev/platform-capabilities/miniapp/api/miniapp/login)

### 2、初始化配置

使用微信开放能力前，需要先完成初始化配置

- 前往查看[微信移动应用能力初始化指引](/miniprogram/dev/platform-capabilities/miniapp/new-capability/opensdk)

### 3、调用示例

示例：
```js

// login
wx.miniapp.login({
    success: (res) => {
        console.log('login success:', res.code)
    }
})
```

## 三、wx.login

### 1、使用说明

- 该接口只适用于前期快速调试阶段，不可作为 App 登录的正式方案，建议可以使用 [wx.miniapp.login](/miniprogram/dev/platform-capabilities/miniapp/api/miniapp/login) 或者 [wx.getMiniProgramCode](/miniprogram/dev/platform-capabilities/miniapp/api/auth/wx.getMiniProgramCode)
- 在开发调试阶段，可在[移动应用助手](/miniprogram/dev/platform-capabilities/miniapp/handbook/assistant/quickstart)中进行体验测试 wx.login；不支持开发者构建安装包安装至手机进行调试的场景。

### 2、使用步骤

- 在微信开发者工具中使用「升级为多端项目」能力的时候，工具会帮开发者自动生成 `app.miniapp.json` 这个文件，并填入要跳转的微信小程序对应的信息。

- `app.miniapp.json` 文件在小程序项目 miniprogramRoot 目录下配置，内容已自动配置完成，开发者无需调整 ：

```json
{
    "adapteByMiniprogram": {
        "userName": "xxxx", // 小程序原始id（不是小程序appid）// 且该字段默认会填好，开发者无需调整 
    }
}

```

- 此外，当多端应用在调用 wx.login 接口，其中的基础库已经进行了兼容逻辑的实现，让开发者无需感知变化。跳转到目标微信小程序的特定页面，特定页面内部会执行，并执行微信小程序内 wx.login 接口，最后将返回的 code 内容传回多端小程序。最后在多端小程序的 wx.login 的 success 接口中返回微信小程序传回的 code。从而让开发者继续按照原来的方式调用 wx.login，无需改变业务逻辑。

## 四、wx.weixinAppLogin

详情可查看[wx.weixinAppLogin](/miniprogram/dev/platform-capabilities/miniapp/api/auth/wx.weixinAppLogin)
