權杖驗證¶
使用從應用程式用戶端成功登入後傳回的 PlayerInfo 中的令牌、玩家 ID 和裝置 ID 來驗證應用程式伺服器上的使用者令牌。 驗證令牌 API 透過伺服器到伺服器通訊進行操作,其中應用程式伺服器直接呼叫 Hive 身份驗證伺服器。如果應用程式不允許重複登錄,您可以管理驗證令牌或使用應用程式自己的會話密鑰實施會話管理。
請求網址¶
| 生產網址 | https://auth.qpyou.cn/v2/game/token/get-token |
|---|---|
| 分散式環境URL | https://auth.globalwithhive.com/v2/game/token/get-token |
| 沙箱網址 | https://sandbox-auth.qpyou.cn/v2/game/token/get-token |
| HTTP 方法 | POST |
| Content-Type | application/json |
| 資料格式 | JSON |
Note
Hive認證伺服器配置在分散式環境中,以應對故障或網路通訊不穩定的情況。
如果與認證伺服器主機通訊失敗,或超過應用程式伺服器定義的逾時時間,應用程式伺服器必須直接呼叫分散式環境URL(Fallback URL)。
請求頭¶
| 欄位名稱 | 描述 | 類型 | 必填 |
|---|---|---|---|
| Authorization | 遊戲用戶端成功登入後回傳的使用者令牌(PlayerInfo.token) | String | Y |
| X-Access-Token | 遊戲用戶端登入成功後回傳的使用者Token OAuth 2.0 用於驗證玩家身分的存取權杖 | String | Y |
| ISCRYPT | 資料是否加密(0 = 未加密;始終傳遞 0) | Integer | Y |
| ## 請求正文 | |||
| 欄位名稱 | 描述 | 類型 | 必填 |
| --- | --- | --- | --- |
| appid | 應用程式 ID | String | Y |
| did | 登入成功後回傳的裝置ID | String | Y |
| player_id | 登入成功後回傳的驗證玩家ID | BigInteger | Y |
| include_fields | 附加欄位清單 用於在回應中要求附加資訊的欄位清單 | Array | N |
Note
您可以選擇透過 include_fields 參數傳回附加資訊。當請求令牌驗證時,回應會根據 include_fields 陣列中指定的欄位值在 data 下包含對應的資訊。
附加欄位清單¶
| 欄位名稱 | 描述 | 類型 |
|---|---|---|
| is_blocked | 是否限制使用(true - 限制,false - 正常) | Boolean |
| is_device_registered | 是否使用設備管理(true - 使用,false - 不使用) | Boolean |
| join_timestamp | player_id 註冊日期(Unix 時間戳記) | Long |
| china_pi_no | 中國實名認證號碼。未完成實名認證返回null | String / null |
| ## 響應體 | ||
| 欄位名稱 | 描述 | 類型 |
| --- | --- | --- |
| result_code | 回應代碼, 0=驗證成功 | Integer |
| result_msg | 結果留言 | String |
| token_validation | JWT 驗證結果 (JWT 驗證錯誤) | Object |
| token_validation.result_code | JWT驗證結果碼 | Integer |
| token_validation.result_msg | JWT 驗證結果訊息 | String |
| data | 包含請求中 include_fields 中指定訊息的物件 | Object |
回應碼¶
| 代碼值 | 描述 |
|---|---|
| 0 | 成功 |
| 2300 | 已退款用戶需還款 |
| 4000 | 無效參數 |
| 4001 | 請求 JSON 錯誤 |
| 2499 | JWT 驗證失敗(請參閱 token_validation) |
| 5000 | 資料庫錯誤 |
| 6000 | 無效的appid |
| 6001 | IdP 令牌錯誤 |
| 7000 | 無效令牌 |
| 7001 | 標頭中沒有標記值 |
| 9999 | 未知錯誤 |
| ## 請求範例 | |
包含字段¶
{
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"did": "255764404509548",
"player_id": 10000000000,
"include_fields": ["is_blocked", "is_device_registered", "join_timestamp", "china_pi_no"]
}
回應範例¶
成功¶
{
"result_code": 0,
"result_msg": "SUCCESS",
"token_validation": {
"result_code": 0,
"result_msg": "success"
}
}
JWT 驗證失敗¶
{
"result_code": 2499,
"result_msg": "JWT validation failed. See token_validation for details.",
"token_validation": {
"result_code": 2408,
"result_msg": "The access token is expired. Please refresh your token."
}
}
包含字段¶
{
"result_code": 0,
"result_msg": "SUCCESS",
"token_validation": {
"result_code": 0,
"result_msg": "success"
},
"data": {
"is_blocked": false,
"is_device_registered": false,
"join_timestamp": 1495594605,
"china_pi_no": null
}
}
Note
當JWT驗證失敗時,您可以在token_validation欄位中查看詳細的錯誤訊息。詳細資訊請參閱JWT 驗證錯誤代碼。