跳转到主要内容

重要安全声明

安全第一原则:在开发和部署第三方应用时,安全性是最重要的考虑因素。必须严格遵守以下安全原则,确保用户数据和授权流程的安全性。
  1. 绝对禁止在前端 JavaScript 代码中暴露 client_secret
  2. 必须在服务器端处理 OAuth 授权码交换 token 的过程
  3. 必须通过后端 API 代理访问受保护的用户资源
  4. 必须使用 HTTPS 协议保护所有 OAuth 通信
违反以上任何一条安全原则都可能导致严重的安全漏洞!

📋 目录

  1. 概述
  2. 接入准备
  3. OAuth2 授权流程
  4. API接口文档
  5. SDK和代码示例
  6. 安全最佳实践
  7. 常见问题
  8. 技术支持

概述

我们提供基于 OAuth2 标准的开放 API,允许第三方应用安全地访问用户的基本信息和账户余额。通过我们的 OAuth2 服务,您的应用可以:
  • 🚀 一键登录:用户无需重复注册,登录完成即自动授权,真正的无缝体验
  • 👤 获取用户信息:访问用户的基本资料(用户名、邮箱等)
  • 💰 查看账户余额:实时获取用户的账户余额信息
  • 🔄 充值跳转:引导用户到我们的充值页面进行账户充值
  • 🔐 自动token刷新:内置 refresh token 机制,无感刷新过期 token,提升用户体验

接入准备

1. 注册开发者账户

首先,您需要在我们的系统中注册一个开发者账户。

2. 创建 OAuth 应用

在开发者控制台中创建您的 OAuth 应用:
API 调用示例
响应示例:
安全重要提醒:
  • client_id 可以在前端使用(公开信息)
  • client_secret 只能在服务器端使用,绝不能暴露给浏览器
  • 请将 client_secret 存储在环境变量中,不要硬编码在代码中

3. 配置回调地址

确保您的回调地址(redirect_uri)满足以下要求:
  • 使用HTTPS协议(生产环境)
  • 指向您的服务器端点(而非前端页面)
  • 域名已备案且可正常访问
  • 路径具体到处理回调的API端点

OAuth2 授权流程

安全流程图

详细步骤

步骤 1:引导用户授权

在您的前端页面添加登录按钮,点击后重定向到您的服务器端授权端点:
前端代码 - 只负责重定向

步骤 2:服务器端处理授权请求

在您的服务器端实现授权处理:
服务器端代码

步骤 3:处理授权回调(服务器端)

服务器端处理授权回调

步骤 4:前端获取用户信息

前端通过 API 代理获取用户信息
服务器端API代理

API 接口文档

1. 授权端点

GET /api/oauth2/authorize 引导用户进行 OAuth2 授权。 参数: 安全要求:
  • redirect_uri 必须与注册时的地址完全匹配
  • state 参数必须是服务器端生成的随机字符串
  • 必须使用 HTTPS 协议(生产环境)
Scope 说明:
  • profile:获取用户基本信息(用户名、邮箱)
  • balance:获取用户账户余额信息

2. 令牌(Token)获取端点

POST /api/oauth2/token
安全警告:此端点只能从服务器端调用,绝不能在前端使用!
用于两种场景:
  1. 使用授权码换取访问令牌
  2. 使用刷新令牌获取新的访问令牌
授权码模式参数: 刷新令牌参数: 响应示例:

3. 用户信息端点

GET /api/oauth2/userinfo 获取用户基本信息和账户余额。 请求头:
header
响应示例:
response

SDK 和代码示例

JavaScript SDK

我们提供了完整的 JavaScript SDK,您可以直接使用:

OAuth 回调页面

创建 /oauth/callback.html 文件:

Node.js 后端示例

为了更好的安全性,建议在后端处理 client_secret

安全最佳实践

1. 客户端密钥保护

  • ✅ 推荐:将 client_secret 存储在后端服务器
  • ❌ 避免:在前端JavaScript中暴露 client_secret

2. State 参数验证

3. HTTPS 使用

  • 生产环境必须使用 HTTPS
  • 回调地址必须使用 HTTPS
  • 所有 API 请求使用 HTTPS

4. Token 安全存储

5. 错误处理

常见问题

Q1: 如何实现真正的一键登录体验?

A: 在授权URL中添加 auto_authorize=true 参数即可。这样用户登录完成后会自动完成授权,无需额外的确认步骤:

Q2: Token 会自动刷新吗?

A: 是的,我们的 SDK 内置了自动 token 刷新机制:
  • 访问令牌:2小时有效期,过期前 5 分钟自动刷新
  • 刷新令牌:30天有效期,用于获取新的访问令牌
  • 无感刷新:所有 API 调用都会自动检查并刷新过期的 token
  • 失败重试:如果 API 返回 401 错误,会自动尝试刷新 token 并重试
只有在刷新令牌也过期时,才需要用户重新登录。

Q3: 可以获取哪些用户信息?

A: 根据授权 scope,您可以获取:
  • profile scope: 用户名、邮箱
  • balance scope: 账户余额信息

Q4: 如何测试 OAuth 集成?

A:
  1. 在开发环境中使用 HTTP localhost 进行测试
  2. 使用我们提供的测试工具验证授权流程
  3. 检查浏览器开发者工具中的网络请求

Q5: 支持哪些编程语言?

A: 我们提供标准的OAuth2 API,支持所有主流编程语言:
  • JavaScript/Node.js
  • Python
  • PHP
  • Java
  • C#/.NET
  • Go
  • Ruby

Q6: 如何撤销用户授权?

A: 用户可以在我们的用户中心 > 授权管理页面撤销对第三方应用的授权。

更新时间:2026-06-01