驗證登入與查詢使用者資訊
登入驗證和用戶信息檢索 是一個通過從登入頁面重定向的臨時身份驗證碼(state
)來驗證登入信息的API,並返回用戶信息。在返回用戶信息時,它包括訪問令牌和刷新令牌。
登入驗證與用戶信息檢索 API 請求返回的值大致如下。
Note
成功登入驗證後,需要用戶信息或令牌信息的情況如下。
- 對於已成功驗證網頁登錄並生成 PlayerID 的用戶,響應包括用戶信息 (
user_info
)。然而,如果用戶信息已更改或需要單獨驗證,您可以通過調用 用戶信息檢索 API 來檢查它。 - 如果需要訪問/刷新令牌,您必須再次執行網頁登錄或通過 令牌刷新 API 在令牌過期之前進行更新。
請求 URL
請求主體
欄位名稱 | 類型 | 描述 | 必填 |
grant_type | 字串 | OAuth 2.0 授權碼流程 default: authorization_code | Y |
state | 字串 | 登入後收到的臨時授權碼 (authorization_code) | Y |
client_id | 字串 | 在安全金鑰設定中生成的 OAuth 2.0 客戶端 ID。您可以在 Hive 控制台 應用中心 > 安全金鑰設定 中查看它。 | Y |
client_secret | 字串 | 在安全金鑰設定中生成的 OAuth 2.0 客戶端密鑰。您可以在 Hive 控制台 應用中心 > 安全金鑰設定 中查看它。 | Y |
redirect_uri | 字串 | 這是重定向 URI 地址。它必須與 Hive 控制台 身份驗證 > 身份驗證環境設定 > 登入設定 中設置的 重定向 URI 匹配。 | Y |
請求主體範例
{
"grant_type": "authorization_code",
"state": "1627881984263-jkx1B3GOY3EsJ",
"client_id": "58b48cd3-df47-5b52-2627-3f9c8d01",
"client_secret": "bec7760b237244c4c818d6174587d8e1",
"redirect_uri": "https://community.withhive.com/hivesdk/login/redirect"
}
回應主體
欄位名稱 | 類型 | 描述 | 備註 |
code | 整數 | 網頁登入回應代碼 | |
appid | 字串 | 應用程式 ID | |
idp_index | 整數 | 用於登入的 IdP 索引 | 1 : Hive2 : Facebook3 : Google9 : Apple
|
idp_user_id | 字串 | 用於 IdP 登入的唯一識別碼 | |
enc_idp | 字串 | IdP 資訊的加密金鑰 | 外部 PC 自動登入令牌發放 金鑰 |
user_info | JSON | 用戶資訊 | |
user_info.auth_ver | 字串 | 認證伺服器版本 | |
user_info.user_id | 大整數 | Auth v4 玩家 ID | |
user_info.user_idp_list | 陣列 | 連結的 IdP 列表 | 包含用戶連結的 IdP 資訊的列表 |
user_info.user_idp_list.player_id | 大整數 | 連結的 IdP 列表 - Auth v4 玩家 ID | |
user_info.user_idp_list.idp_user_id | 字串 | 連結的 IdP 列表 - IdP 的唯一識別碼 | |
user_info.user_idp_list.idp_index | 整數 | 連結的 IdP 列表 - IdP 索引 | 1 : Hive2 : Facebook3 : Google9 : Apple
|
user_info.user_idp_list.idp_id | 字串 | 連結的 IdP 列表 - IdP ID | 即使使用其他 IdP 也會預設創建 GUEST |
user_info.is_blocked | 布林值 | 使用暫停狀態 | |
user_info.is_refund | 布林值 | 用戶是否有資格進行退款重付款 | true : 用戶有資格進行退款重付款false : 用戶不符合退款重付款資格
|
user_info.access_token | 字串 | 存取權杖 (JWT) - 非對稱演算法 | - 如果沒有帳戶 (PlayerID) 則不會發出。
- 有效期:1 小時
|
user_info.refresh_token | 字串 | 刷新權杖 (JWT) - 非對稱演算法 | - 如果沒有帳戶 (PlayerID) 則不會發出。
- 有效期:30 天
|
網頁登入回應代碼
代碼 | 描述 | 備註 |
100 | 成功 | |
1050 | 無效的參數 | |
1075 | 認證伺服器通信錯誤 | |
2011 | 沒有項目信息 | |
2013 | 項目處於終止狀態 | |
2021 | 用戶尚未完成 IdP 認證或用戶的令牌會話已過期 | |
2023 | 用戶的令牌信息異常 | |
7000 | OAuth2.0 安全金鑰未生成 | 在 Hive 控制台檢查 應用中心 > 安全金鑰設置 |
7001 | OAuth2.0 客戶端 ID 值缺失 | 〃 |
7002 | OAuth2.0 客戶端信息不匹配 | 〃 |
7003 | OAuth2.0 客戶端信息未找到 | 〃 |
7004 | OAuth2.0 不支持的令牌發行類型 | 檢查請求正文中的 grant_type |
7005 | OAuth2.0 重定向 URI 不匹配 | 檢查請求正文中的 redirect_uri |
8001 | OAuth2.0 JWT 令牌創建失敗 | |
回應主體範例 (成功 - 用戶資訊存在)
當滿足以下條件時,這裡是返回的響應數據示例。
- 當網頁登入成功完成時
- 當 PlayerID 在認證伺服器上創建時
{
"code": 100,
"appid": "com.com2us.hivesdk.ios.community.global.normal",
"idp_index": 3,
"idp_user_id": "105213591741718897220",
"enc_idp": "K+A4xduO7kf5OrJ/iDPqL2wrbMQTkNQ+jDz3OCCdGiezVsfW74kV0c/Qn2ipdP/ChFBUXoZkEUP03X26MVHnvgqHo9JG2BUCsRVcrsx+03IPRvpzjXAiY5c0tihk45jMWuPYo7q+j5Rsz8eSTKQo1vE9N85huOJWc8IAJKMqBRlpmiNfj+CgZQ5I7uV2u1nHhiLfwRqpt0vG/dT9mpdQisiKUS2mFIpgPnVSZaVMY7qnTvP+mTU11Yv2DhOq2VEycAic9Ko8UkBnllXEApqarqF5s4jg6bu9DxcnRNtZeaGbh4fZKEptjGuE6qqo3CsC1PN5TnU0Wf5uav07CaazsTpEBvA9SNZefWEeTDP2ePK8qd573vpXy4OQHpTOJkVm1AsN/Ir8Fssj9SKGdYyVuZ282VDAiFLAIlVyK4pAfjJRAve+G9tIm/i4mgQmuAqW",
"user_info": {
"auth_ver": "v4",
"user_id": 20000018552,
"user_idp_list": [
{
"player_id": 20000018552,
"idp_user_id": "105213591741718897220",
"idp_index": 3,
"idp_id": "GOOGLE"
},
{
"player_id": 20000018552,
"idp_user_id": "0",
"idp_index": 0,
"idp_id": "GUEST"
}
],
"is_blocked": false,
"is_refund": false,
"access_token": "eyJraWQiOiIwYThlMThkOS1hNmZiLTM3ZDMtNjkwYy02Zjg1ZTllNCIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJpc193aGl0ZWxpc3QiOmZhbHNlLCJwcm9qZWN0X2lkIjoiY29tLmNvbTJ1cy5oaXZlc2RrIiwiZ3JhbnRfdHlwZSI6InVzZXIiLCJ1c2VyX2lkIjoyMDAwMDAxODU1MiwidG9rZW5fdHlwZSI6ImFjY2Vzc190b2tlbiIsImV4cCI6MTc0NTU2MTk4MywiaWF0IjoxNzQ1NTU4MzgzLCJhdXRoX3ZlciI6InY0In0.e4mCIirRpAni4A1ZEF3FDOFng3Da8hq6IqZmyyRQZsc7W3LfFi_id5TIQSDbvmagmT4GcwHztovpoYZxf8blwqES1lJmEVXsBBJ3qpEOAem0K9aVwY0zmOO3A0Eeh6Y0APABewNCpHiKPCMZwxSsMaUE56FfuYgnbhpsipR638VgyPniRVU-Bzcu0Pi2zo-5yUKbg2FCXex510fvZRxqGZPg8Rfhm-jXqAYuwALLIFf2ZykOWqVRFtczfPXwB6fLQrQvQeBnOYcHHnR1q8Fi-Rk_bQPsAffIemGvaC4vUeyx6Szzt_Gok1BsuF76lYZ5ogCn4lAlZ0SJLrgMM2-DNQ",
"refresh_token": "eyJraWQiOiIwYThlMThkOS1hNmZiLTM3ZDMtNjkwYy02Zjg1ZTllNCIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJpc193aGl0ZWxpc3QiOmZhbHNlLCJwcm9qZWN0X2lkIjoiY29tLmNvbTJ1cy5oaXZlc2RrIiwiZ3JhbnRfdHlwZSI6InVzZXIiLCJ1c2VyX2lkIjoyMDAwMDAxODU1MiwidG9rZW5fdHlwZSI6InJlZnJlc2hfdG9rZW4iLCJleHAiOjE3NDgxNTAzODMsImlhdCI6MTc0NTU1ODM4MywiYXV0aF92ZXIiOiJ2NCJ9.fvXTfRDYhlk21EY-ngAXbQMgYM9f-rFYPBa_GMV3JDz3cy9wwGfPTnF-VO0WkpxzpPdbG1ZX0HAdIkT4kF873ee2d-g6-JeuIEy0SFcTMpdYWXnlOfsuZlFIkzCm0OB_mlnNo_wxXHvjHM_dFDF-SfK2r9_ga8yLOXDfLJeA4XUYGwwsG3XT9x5Vy8RlUcF2aeuf-2bXdLSD2NGssZh18RTayV2CNtGuX0kj-nABVVTzLWUqbwKSrIVXjlS76zxl3SisUW_pz97iM98yLLRdpe_56_VDPzKEqVmn4bCyhhlAT1LEdu_uudlBY7hSUX0cJzcLAtj_4GReuLU9SnvQpw"
}
}
回應主體範例(成功 - 無用戶信息)
當滿足以下條件時,這裡是返回的響應數據示例。
- 如果網頁登入成功完成
- 即使在認證伺服器上未創建 PlayerID,開發者仍然可以使用 IdP 識別碼(
idp_index
、idp_user_id
)作為用戶的帳戶識別碼來處理登入。然而,如果在沒有用戶信息的情況下進行登入,將不會有 PlayerID,因此無法使用 保持登入(SSO)。
{
"code": 100,
"appid": "com.com2us.hivesdk.ios.community.global.normal",
"idp_index": 3,
"idp_user_id": "105213591741718897220",
"enc_idp": "K+A4xduO7kf5OrJ/iDPqL2wrbMQTkNQ+jDz3OCCdGiezVsfW74kV0c/Qn2ipdP/ChFBUXoZkEUP03X26MVHnvgqHo9JG2BUCsRVcrsx+03IPRvpzjXAiY5c0tihk45jMWuPYo7q+j5Rsz8eSTKQo1vE9N85huOJWc8IAJKMqBRlpmiNfj+CgZQ5I7uV2u1nHhiLfwRqpt0vG/dT9mpdQisiKUS2mFIpgPnVSZaVMY7qnTvP+mTU11Yv2DhOq2VEycAic9Ko8UkBnllXEApqarqF5s4jg6bu9DxcnRNtZeaGbh4fZKEptjGuE6qqo3CsC1PN5TnU0Wf5uav07CaazsTpEBvA9SNZefWEeTDP2ePK8qd573vpXy4OQHpTOJkVm1AsN/Ir8Fssj9SKGdYyVuZ282VDAiFLAIlVyK4pAfjJRAve+G9tIm/i4mgQmuAqW"
}
回應主體範例 (失敗)
這是當滿足以下條件時返回的響應數據的示例。
外部 PC 自動登入令牌發放
- 當運行 Hive 跨平台啟動器時,相應的令牌值 (web_idp_token) 會被傳遞以進行自動登錄。
- web_idp_token 是一個一次性令牌,每次啟動遊戲時都需要重新獲取。
Note
- 請小心不要暴露為安全原因而傳遞請求的 enc_idp 值。
- 在進行 API 調用時,必須應用伺服器到伺服器。
請求 URL
請求正文
欄位名稱 | 類型 | 描述 | 必填 |
appid | 字串 | 應用程式 ID | Y |
enc_idp | 字串 | IdP 資訊的加密金鑰 | Y |
請求主體範例
{
"appid": "com.com2us.hivesdk.ios.community.global.normal",
"enc_idp": "K+A4xduO7kf5OrJ/iDPqL2wrbMQTkNQ+jDz3OCCdGiezVsfW74kV0c/Qn2ipdP/ChFBUXoZkEUP03X26MVHnvgqHo9JG2BUCsRVcrsx+03IPRvpzjXAiY5c0tihk45jMWuPYo7q+j5Rsz8eSTKQo1vE9N85huOJWc8IAJKMqBRlpmiNfj+CgZQ5I7uV2u1nHhiLfwRqpt0vG/dT9mpdQisiKUS2mFIpgPnVSZaVMY7qnTvP+mTU11Yv2DhOq2VEycAic9Ko8UkBnllXEApqarqF5s4jg6bu9DxcnRNtZeaGbh4fZKEptjGuE6qqo3CsC1PN5TnU0Wf5uav07CaazsTpEBvA9SNZefWEeTDP2ePK8qd573vpXy4OQHpTOJkVm1AsN/Ir8Fssj9SKGdYyVuZ282VDAiFLAIlVyK4pAfjJRAve+G9tIm/i4mgQmuAqW"
}
回應主體
欄位名稱 | 類型 | 描述 | 備註 |
result_code | 整數 | 結果代碼 | |
result_msg | 字串 | 結果訊息 | |
data | JSON | 結果數據 | |
data.web_idp_token | 字串 | 外部PC自動登錄令牌 | |
回應主體範例
{
"result_code": 0,
"result_msg": "SUCCESS",
"data": {
"web_idp_token": "c47e61856f04f0a6194ddcbabca70a7f10552d044181386e625676fd07a63aee5d2b162a78a55bad350ed58fb07b79be8fea1c786108307f32b602019f31ac8d"
}
}
結果代碼
result_code | 描述 |
0 | 成功 |
4000 | 無效的請求參數 |
4012 | enc_idp 解密錯誤 |