# 获取用户加密手机号


登录过程中获取豆包绑定的手机号，用于三方自有账号体系的绑定或者注册。用户在智能服务端授权手机号后，客户端获取到一次性 phone_code，服务端携带应用级 access_token 调用本接口获取加密后的手机号。

## 使用限制

- phone_code 为一次性授权码，短期有效，使用后即失效，不可重复使用。
- 本接口需要传入应用级 access_token（通过「获取应用级别鉴权 Token」接口获取），请确保 token 未过期。
- 返回的手机号为加密格式，三方服务端需按照平台约定的解密方式进行解密后使用。

## 接口说明

- 业务场景：用户在三方智能服务中授权手机号，智能服务端调用豆包获取手机号组件获得 phone_code，发送至三方服务端。服务端调用本接口获取用户加密手机号，解密后可用于账号绑定或注册。
- 前提条件：
- 已通过「获取应用级别鉴权 Token」接口获取有效的 access_token。
- 智能服务客户端已完成用户手机号授权流程，获取到有效的 phone_code。
- 注意事项：
- phone_code 有效期极短，服务端收到后应立即调用本接口，避免 code 过期。
- 返回的 encrypt_phone_number 为加密数据，需要使用平台注册时颁发的密钥进行解密。
- 手机号属于用户敏感信息，解密后请遵守相关隐私法规妥善处理。

## 基本信息

| 名称 | 描述 |
|-|-|
| HTTP Path | /api/login/v1/developer/get_user_phonenumber |
| HTTP Method | POST |
| Scope | 无需特殊 Scope |
| 权限要求 | 需要用户在智能服务端完成手机号授权 |

## 请求头

| 名称 | 类型 | 必填 | 描述 |
|-|-|-|-|
| content-type | string | 是 | 固定值 "application/json" |
| x-DB-AccessToken | string | 是 | 应用级 token，通过「获取应用级别鉴权 Token」接口获取。示例：clt.943da17996fb5cebfbc70c044c3fc25a57T54DcjT6HNKGqn\*\*\*\*\*\* |

## 请求参数

### Body

| 名称 | 类型 | 是否必填 | 描述 | 示例值 |
|-|-|-|-|-|
| phone_code | string | 是 | 一次性获取手机号授权码。用户在智能服务端授权手机号后，客户端获取到的短期有效一次性授权码。 | 9f8e7d6c5b4a\*\*\*\*\*\* |

## 请求示例

cURL

Go

Java

Node.Js

```shell
curl -X POST 'https://api.doubao-dev.com/api/login/v1/developer/get_user_phonenumber' \
  -H 'content-type: application/json' \
  -H 'x-DB-AccessToken: clt.943da17996fb5cebfbc70c044c3fc25a57T54DcjT6HNKGqn******' \
  -d '{
    "phone_code": "9f8e7d6c5b4a******"
  }'
```

## 响应参数

| 名称 | 类型 | 是否必填 | 描述 | 示例值 |
|-|-|-|-|-|
| code | integer | 是 | 响应状态码，0 表示成功，非 0 表示失败。 | 0 |
| msg | string | 是 | 响应状态描述信息。 | success |
| log_id | string | 是 | 日志ID，用于问题排查时提供给技术支持。 | 20260309120000PHONE345678 |
| data | object | 是 | 响应数据对象，详见下方 data 字段说明。 | - |

### data 字段说明

| 名称 | 类型 | 是否必填 | 描述 | 示例值 |
|-|-|-|-|-|
| encrypt_phone_number | string | 是 | 加密后的手机号。三方服务端需使用平台约定的密钥和解密算法进行解密后获取明文手机号。 | U2FsdGVkX1+Z7e5k\*\*\*\*\*\* |

## 响应示例

### 正常示例

```json
{
    "code": 0,
    "msg": "success",
    "log_id": "20260309120000PHONE345678",
    "data": {
        "encrypt_phone_number": "U2FsdGVkX1+Z7e5k******"
    }
}
```

### 异常示例

```json
{
    "code": 40006,
    "msg": "phone_code is invalid or expired",
    "log_id": "20260309120001PHONE901234",
    "data": null
}
```

## 错误码

| HTTP 状态码 | 错误码 | 描述 | 排查建议 |
|-|-|-|-|
| 200 | 0 | 请求成功 | - |
| 200 | 40001 | 参数错误 | 请检查请求参数是否完整、格式是否正确，确认 phone_code 已正确填写。 |
| 200 | 40006 | phone_code 无效或已过期 | phone_code 为一次性短期有效授权码，请确认 code 是否已被使用或已过期，需重新引导用户授权获取新的 phone_code。 |
| 200 | 41001 | access_token 无效或已过期 | 请确认请求头中的 x-DB-AccessToken 是否正确传入，token 是否已过期。如已过期，请重新调用「获取应用级别鉴权 Token」接口获取新的 token。 |
| 200 | 41002 | access_token 缺失 | 请在请求头中添加 x-DB-AccessToken 字段并传入有效的应用级 token。 |
| 200 | 41050 | 无权限 | 请确认应用是否已申请手机号获取权限。申请路径：智能服务开放平台控制台 > 应用详情 > 能力 > 手机号权限。 |
