OAuth 權杖核發¶
呼叫 Hive Server API 時發出授權驗證和安全性身分驗證所需的 OAuth 令牌。 「頒發 OAuth 令牌」API 遵循 OAuth 2.0 用戶端憑證授予標準,並作為伺服器到伺服器驗證流程運行,其中應用程式伺服器直接呼叫 Hive 驗證伺服器。 「頒發 OAuth 令牌」API 具有以下特徵。 - 僅使用客戶端 ID 和金鑰頒發令牌 - 僅頒發存取令牌(不頒發刷新令牌) - 有效期限為 1 小時(3600 秒)
Note
有關頒發客戶端 ID 和客戶端金鑰的信息,請參閱 安全金鑰設定。
請求網址¶
| 生產網址 | https://auth.qpyou.cn/oauth/token |
|---|---|
| 沙箱網址 | https://sandbox-auth.qpyou.cn/oauth/token |
| HTTP 方法 | POST |
| Content-Type | application/json |
| 資料格式 | JSON |
| ## 請求頭 | |
| 欄位名稱 | 描述 |
| --- | --- |
| ISCRYPT | 資料是否加密(0 = 未加密;始終傳遞 0) |
| ## 請求正文 | |
| 欄位名稱 | 描述 |
| --- | --- |
| appid | 應用程式 ID |
| grant_type | 已修正為 client_credentials |
| client_id | 客戶端ID(在App Center中頒發) |
| client_secret | 客戶端金鑰(在應用程式中心發佈) |
| ## 請求範例 | |
| ### curl | |
身體¶
{
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"grant_type": "client_credentials",
"client_id": "project_abc123",
"client_secret": "secret_xyz789"
}
響應體¶
| 欄位名稱 | 描述 | 類型 |
|---|---|---|
| result_code | 回應代碼, 0=成功 | Integer |
| result_msg | 結果留言 | String |
| data | 回應資料 | Object |
| data.access_token | JWT 存取權令牌 | String |
回應碼¶
| 代碼值 | 描述 |
|---|---|
| 0 | 成功 |
| 4000 | 參數無效(缺少必要參數或格式無效) |
| 4001 | 客戶端驗證失敗(client_id 或 client_secret 不符) |
| 4002 | 不支援的 grant_type |
| 4003 | 身份驗證失敗(無權限) |
| 5000 | 內部伺服器錯誤 |
回應範例¶
{
"result_code": 0,
"result_msg": "SUCCESS",
"data": {
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InByb2plY3RfYWJjMTIzIn0.eyJwcm9qZWN0X2lkIjoiY29tLmNvbTJ1cy5leGFtcGxlIiwidG9rZW5fdHlwZSI6ImFjY2Vzc190b2tlbiIsImdyYW50X3R5cGUiOiJwcm9qZWN0IiwiaWF0IjoxNzE1NTg0MDAwLCJleHAiOjE3MTU1ODc2MDAsImF1dGhfdmVyIjoidjQiLCJ1c2VyX2lkIjoiIiwiaXNfd2hpdGVsaXN0Ijp0cnVlfQ.signature"
}
}
錯誤回應範例¶
如何使用代幣¶
呼叫 Hive Server API 時,將頒發的存取權令牌包含在 HTTP 標頭中。
JWT 令牌結構¶
簽發的Access Token採用JWT(JSON Web Token)格式,由三個部分組成,以句點(.)分隔:Header、Payload和Signature。
標題¶
| 領域 | 價值 | 描述 |
|---|---|---|
| 孩子 | 客戶ID | 客戶端標識符(用於 JWT 驗證) |
| 藻類 | RS256 | 簽章演算法(RSA SHA-256) |
| 典型 | 智威湯遜 | 代幣類型 |
| #### 有效負載 | ||
| 領域 | 描述 | |
| --- | --- | |
| grant_type | 專案(client_credentials 方法) | |
| 經驗 | 過期時間(發出後1小時) | |
| iat | 發佈時間 | |
| token_type | 存取權杖 |
Tip
伺服器使用公鑰驗證 JWT 簽章。標頭中的 kid 欄位標識它是哪個客戶端的令牌。
標題設置¶
Note
呼叫 Hive Server API 時,請將頒發的 JWT 存取權杖包含在 X-Access-Token 標頭中。如果令牌遺失或過期,則會發生身份驗證錯誤。
JWT 令牌驗證錯誤¶
當 Hive Server API 中的 JWT 令牌驗證失敗時,將透過 token_validation 欄位提供詳細的錯誤訊息。
token_validation 字段¶
此欄位包含JWT驗證錯誤訊息: | 欄位名稱 | 描述 | 類型 | | --- | --- | --- | | token_validation | JWT 驗證詳細資料 | Object | | token_validation.result_code | JWT驗證結果代碼詳情 | Integer | | token_validation.result_msg | JWT 驗證結果訊息 | String | ???+ note- JWT 驗證成功時:token_validation.result_code: 0 - JWT驗證失敗時:在token_validation.result_code中傳回詳細的錯誤代碼 - 此欄位通常由 Hive Server API 使用。
錯誤回應範例¶
沒有客戶訊息¶
缺少令牌¶
令牌簽署錯誤¶
過期令牌¶
"token_validation": {
"result_code": 2408,
"result_msg": "The access token is expired. Please refresh your token."
}
JWT 驗證錯誤代碼¶
| 代碼值 | 描述 | 解析度 |
|---|---|---|
| 2400 | 暫無客戶資訊 | JWT 標頭中的 kid 無效。檢查客戶端 ID。 |
| 2405 | 令牌格式錯誤 | JWT 格式無效。重新發行令牌。 |
| 2406 | 缺少令牌 | X-Access-Token 標頭遺失。發出令牌並將其包含在標頭中。 |
| 2407 | 令牌簽章錯誤 | JWT 簽章驗證失敗。確保您使用正確的令牌。 |
| 2408 | 過期令牌 | 存取令牌已過期(1 小時)。重新發行新的代幣。 |
| 2409 | 令牌尚未生效 | JWT 早於其 nbf(不早於)時間。檢查系統時間。 |
| 2410 | 授權類型不符合 | 請求的 grant_type 與 JWT 中的 grant_type 不同。 |
| 2411 | 使用者 ID 不符合 | 請求的player_id與JWT中的user_id不同(使用使用者令牌時)。 |
| 2412 | 授權類型不符合 | JWT 中的 grant_type 不是「user」。使用遊戲用戶端登入成功後回傳的User Token。 |
| ### 正常回應 | ||
| 當 JWT 驗證成功時: | ||
Note
Hive Server API 在每個回應中都包含 token_validation 字段,無論成功或失敗。
令牌更新¶
刷新令牌不是在客戶端憑證授予中頒發的。
處理令牌過期¶
- Access Token過期(發出後1小時) 2.呼叫API時JWT驗證失敗(
token_validation.result_code: 2408) 3.呼叫/oauth/token介面重新簽發新的Access Token
Note
當存取令牌過期時,您必須使用相同的客戶端 ID 和客戶端金鑰重新頒發新令牌。由於沒有提供刷新令牌,因此請按照與初始發行相同的方式重新發行令牌。
建議的代幣重用¶
訪問令牌可以重複使用,直到過期。 建議: - 建議:快取已發放的token並重複使用直至過期 - 不建議:為每個 API 呼叫發出新的令牌
Tip
僅在遊戲伺服器啟動或令牌過期時重新頒發令牌來優化效能。不必要的令牌發行會增加伺服器負載。
安全建議¶
客戶端機密管理¶
客戶端密鑰是敏感訊息,必須安全管理。 | 項目 | 描述 | | --- | --- | | 切勿暴露 |切勿將客戶端密鑰暴露給客戶端(應用程式/網路) | | 僅限伺服器 |僅在遊戲伺服器上使用它(伺服器到伺服器通訊)| | 安全儲存 |將其儲存在環境變數或安全儲存(Vault)中 |
Warning
如果客戶端金鑰被洩露,攻擊者就可以冒充遊戲伺服器並存取所有玩家資訊。
需要 HTTPS¶
頒發 OAuth Token 和呼叫 API 時必須使用 HTTPS。 - 建議:https://auth.qpyou.cn/oauth/token - 禁止:使用http://(容易受到中間人攻擊)