# 用户账号绑定

同一用户在多端应用的不同登录方式对应不同的账号，如微信、手机号和苹果账号等。通过账号绑定，
* 开发者可以识别到不同账号对应相同的用户。
* 开发者可以整合不同账号体系的能力，如手机号登录也可以使用云开发。

## 绑定时序

```mermaid
sequenceDiagram
	participant client as 多端应用
	participant wx server as 多端服务器

	client->>client:wx.xxxLogin登录账号A，获取 code

	client->>client:开发者自定义绑定入口，用户触发绑定账号B
	client->>wx server:wx.miniapp.bindXXX，请求绑定账号B

	alt 
        note right of client: 账号B不存在
		wx server->>wx server:绑定账号A和账号B
		wx server->>client:绑定成功

	else 
        note right of client: 账号B存在
		wx server->>client:绑定失败
	end
```

**时序说明**

1. 用户登录账号A（如微信），然后通过开发者自定义的绑定入口，触发调用 wx.miniapp.bindXXX 绑定账号B（如手机号），后续账号A和账号B就可以关联到同一用户。wx.miniapp.bindXXX 表示不同的账号绑定方式，[wx.miniapp.bindPhone](/miniprogram/dev/platform-capabilities/miniapp/api/auth/wx.miniapp.bindPhone)、[wx.miniapp.bindWeixin](/miniprogram/dev/platform-capabilities/miniapp/api/auth/wx.miniapp.bindWeixin)和[wx.miniapp.bindApple](/miniprogram/dev/platform-capabilities/miniapp/api/auth/wx.miniapp.bindApple)等。 

2. 开发者可以调用 [wx.miniapp.checkBindInfo](/miniprogram/dev/platform-capabilities/miniapp/api/auth/wx.miniapp.checkBindInfo)检查当前用户是否已经绑定某种账号，没有再提供绑定入口。

3. 如果账号B存在，说明账号B已经绑定、或者账号A和账号B已经对应两个不同用户，则绑定操作失败。开发者可以根据自身业务引导用户进行如下三种操作之一：

* 放弃绑定账号B。

* 先调用服务端API unbindXXX 解绑已有账号B，再进行绑定。unbindXXX 表示不同的账号解绑方式，[解绑手机号](/miniprogram/dev/platform-capabilities/miniapp/openapi/unbindphone)、[解绑微信号](/miniprogram/dev/platform-capabilities/miniapp/openapi/unbindweixin)和[解绑苹果账号](/miniprogram/dev/platform-capabilities/miniapp/openapi/unbindapple)等。

* 先调用服务端API[注销用户](/miniprogram/dev/platform-capabilities/miniapp/openapi/unregisteruser) 注销已有账号B，再进行绑定。

## 实现示例

[快速实现绑定手机号](bindphone)
