RankHub

概览与快速开始

RankHub 的 OAuth 2.1 / OIDC 接入全貌:平台地址、端点清单、客户端类型与五分钟上手路径。

RankHub 对外提供一套 OAuth 2.1 + OIDC 能力:第三方应用可以让用户用 RankHub 账号登录, 并在用户授权后代表其访问 RankHub 的接口。

  • 开发者平台(注册应用、拿凭据、看统计):open.rankhub.cc
  • 授权与 OIDC 端点所在域:https://auth.rankhub.cc
  • 业务 API(拿到令牌后调用):https://api.rankhub.cc

三件必须先知道的事

  1. 授权确认发生在 RankHub App 里。浏览器打开的是同意页,但它只负责把请求交给用户手机上的 RankHub App(深链或二维码),用户在 App 内批准或拒绝。纯网页登录态不能代替这一步。
  2. 应用必须过审。在开发者平台注册后状态是「审核中」,未通过审核的应用做授权/换令牌一律 返回 invalid_client。
  3. 业务接口只经 https://api.rankhub.cc。直连后端宿主端口不会被认作已登录(401)。

端点清单

用途地址
发现文档(OIDC Discovery)https://auth.rankhub.cc/v1/oidc/.well-known/openid-configuration
公钥集(JWKS)https://auth.rankhub.cc/v1/oidc/jwks
授权页(给人看,托管同意页)https://auth.rankhub.cc/oauth/authorize
设备确认页(输入 user_code)https://auth.rankhub.cc/oauth/device
授权端点(协议面,返回 JSON)https://auth.rankhub.cc/v1/oauth/authorize
令牌端点https://auth.rankhub.cc/v1/oauth/token
用户信息https://auth.rankhub.cc/v1/oidc/userinfo
撤销令牌https://auth.rankhub.cc/v1/oauth/revoke
自省令牌https://auth.rankhub.cc/v1/oauth/introspect
设备授权(RFC 8628)https://auth.rankhub.cc/v1/oauth/device_authorization
前端接入脚本(JS SDK)https://auth.rankhub.cc/oauth/sdk.js

发现文档不在标准路径

OIDC 的 issuer 是 https://auth.rankhub.cc,但发现文档实际挂在 /v1/oidc/.well-known/openid-configuration —— 根路径 /.well-known/openid-configuration 返回 404。通用 OIDC 库按「issuer + /.well-known/openid-configuration」自动发现会失败, 必须手动指定发现地址(或直接手填端点)。详见OIDC 与用户身份。

选一种接入方式

客户端类型怎么选

公开客户端(public)机密客户端(confidential)
注册时 Token endpoint authenticationnoneclient_secret_post 或 client_secret_basic
client_secret没有有,只在创建/轮换时展示一次
PKCE强制 S256可选(注册时未要求则不校验)
适合浏览器 SPA、移动端、桌面端有服务端的 Web 应用、后端任务
能不能在浏览器里换令牌能(没有 secret 可泄露)不能,client_secret 不能进浏览器

支持的协议子集

能力状态
authorization_code + PKCE(S256)支持
refresh_token(轮换 + 重放检测)支持
device_code(RFC 8628)支持(托管确认页 /oauth/device,见设备码流)
id_token(ES256 签名)+ userinfo支持
令牌自省 / 撤销支持
可内嵌授权面(/oauth/embed)支持,但需要登记来源(见 JS SDK)
implicit、密码模式(ROPC)不支持
response_mode 除 query 外不支持
request / request_uri(JAR)、id_token_hint不支持
end_session / RP 发起的登出不支持(用撤销令牌代替)
动态客户端注册(DCR)、private_key_jwt不支持(在开发者平台注册)

拿到令牌之后:业务 API

OAuth 只解决「用户是谁、应用被授权了什么」。要读写游戏数据,再用 access token 调 https://api.rankhub.cc。游戏数据只有一个面:/v1/games/**(旧的 /v0 游戏接口只服务 RankHub 自有客户端)。

scope 决定能做什么,形状决定能不能调

/v1/games/** 按 game:read / game:write 判定;写覆盖读。缺 scope 是 403,不是 401 —— 重新授权补 scope 才能解决。但 scope 补不齐"仅第一方"的形状(导入 / 同步 / 任务 / 机台中转 / 删除审批),那些一律 403 game.firstPartyOnly,边界见权限范围与可用 API。

接下来

注册应用

去 open.rankhub.cc 创建 OAuth 应用,填回调地址与权限范围, 确认写入政策后提交审核。

跑通授权码流程

按授权码 + PKCE 拿到 access_token 与 id_token。

校验身份

按OIDC 与用户身份 验签 id_token,需要更多资料再调 userinfo。

调业务接口

看权限范围与可用 API 确认 scope 与接口的对应关系。

出问题时先看错误与排障,那里按症状列了最常见的十几种失败。

本页内容