
# FAQs

> **更新时间：** 2026-04-23 <br/>
> **文档摘要：** 本指南旨在协助经纪商快速接入 WEEX OAuth服务。

---

## 授权流程应该由前端主导还是后端主导？

推荐采用"前端发起、后端主导"模式，完整流程如下：

1. **发起授权**：三方前端调用三方后端的发起授权接口，由后端生成 `state`、`code_verifier`、`code_challenge`，组装完整的授权页跳转地址（含所有参数），并创建一条状态为 `INIT` 的授权任务，最终将授权页地址返回给前端
2. **跳转授权页**：三方前端拿到地址后直接跳转，用户在授权页完成登录和确认授权
3. **处理回调**：用户授权成功后，OAuth Server 将 `code` 和 `state` 回调至三方后端，后端校验 `state` 有效性，依次完成 `/token` 换取和 `create-api` 调用，保存绑定结果，并将任务状态更新为 `SUCCESS` 或 `FAILED`
4. **跳转结果页**：后端处理完成后，直接将用户跳转到三方前端的平台 API Key 页面
5. **展示结果**：前端进入页面后，调用三方后端的绑定状态查询接口，获取并展示当前绑定结果

---

## state 有什么要求？

`state` 必须由三方后端生成，要求随机、唯一、一次性，并设置较短的有效期。后端在收到 OAuth 回调时，须校验 `state` 是否匹配、是否已过期、对应任务是否处于合法状态，防止重放攻击和 CSRF 风险。

---

## PKCE（code_verifier / code_challenge）需要注意什么？

`code_verifier` 须由三方后端生成并持久化保存，用于后续换取 `access_token`。`code_challenge` 由 `code_verifier` 派生，`code_challenge_method` 固定使用 `S256`。三方前端不应持有或传递 `code_verifier`。

---

## 收到 OAuth 回调后，后端应按什么顺序处理？

后端收到携带 `code` 和 `state` 的回调请求后，建议按以下顺序执行：

1. 根据 `state` 查询对应任务，校验有效性
2. 将任务状态更新为 `PROCESSING`
3. 使用 `code + code_verifier` 调用 `/token` 换取 `access_token`
4. 使用 `access_token` 调用 `create-api`
5. 保存绑定结果或失败原因，更新任务状态为 `SUCCESS` / `FAILED`
6. 跳转三方前端平台 API Key 页面

---

## apikey、secret 等敏感信息可以放在 URL 里返回给前端吗？

不建议。后端完成回调处理后，应直接跳转到前端页面（如 `/platform/apikey`），由前端主动调用查询接口获取绑定结果。`apikey`、`secret`、`passphrase` 及明文错误信息均不应出现在 URL 参数中，也不应写入普通日志。

---

## 经纪商子账户接口

## 注册用户接口一次最多支持多少条？

最多 10 条。超过限制会返回参数校验错误。

---

## 创建 API Key 不传 authorities 会怎样？

默认只开通 `ACCOUNT_DETAILS` 只读权限。

---

## 什么时候必须传 IP 白名单？

创建或修改 API Key 时，只要权限中包含除 `ACCOUNT_DETAILS` 以外的权限，就必须传 `ipWhiteList`。

---

## Secret 是否可以再次查询？

不可以。`secret` 仅在创建 API Key 成功响应中返回一次，请妥善保存。

---

## 为什么注册接口有成功列表和失败列表？

注册接口支持批量处理，单条失败不会回滚其他成功用户，因此会分别返回成功列表和失败列表。

---

## 为什么不能充值、提现？

需要充值权限、提现权限。

---

## 如何确定币种和网络参数？

请先调用现货接口 `GET /api/v3/coins` 获取币种及其网络配置。传入的 `network` 必须属于指定 `coin`，且相应的充值或提币开关必须已开启。

---

## 提币或转账的 accountList 支持哪些值？

支持 `11`（资金账户）、`10`（现货账户）和 `8`（合约账户）。列表不能为空；服务端会保留调用方给定的扣款顺序并去除重复值。

---

## 什么情况下必须传 addressTag？

当币种网络要求 Memo/Tag 时必须传入 `addressTag`，否则返回 `-2435`。不需要 Memo/Tag 的网络可以不传。

---

## 发起内部转账时不传 network 会怎样？

服务端会使用该币种在 `GET /api/v3/coins` 中标记为默认的网络。内部转账虽然不产生链上交易，但仍会根据选定网络校验提币开关和最小金额。
