IdP 帳號管理
使用 IdP(身分提供者)憑證資訊建立和管理玩家帳戶。 「IdP 帳戶管理」API 透過伺服器到伺服器通訊進行操作,其中應用程式伺服器直接呼叫 Hive 驗證伺服器。它可用於多種用途,包括玩家 ID 建立、登入、IdP 連結和取消連結、在 Web 環境中實現登入以及遷移現有帳戶。
Note
此 API 不支援透過 Google、Meta 和 Apple 等外部身分驗證提供者進行使用者驗證或憑證取得。直接在應用程式用戶端中實現這些過程,並將結果傳遞到應用程式伺服器。
「IdP帳號管理」功能提供的API如下。 | API 端點 | 描述 | | --- | --- | | POST /v2/game/auth/signinidp | IdP 登入 | | POST /v2/game/auth/connect | 連結 IdP | | POST /v2/game/auth/disconnect | 解除 IdP 連結 |
IdP 登入
使用 IdP 資訊為新玩家建立玩家 ID,或如果 IdP 已註冊,則傳回現有玩家資訊。當IdP登入請求成功後,您可以在data.player_id中查看產生的玩家ID。
請求網址
請求頭
| 欄位名稱 | 描述 | 類型 | 必填 |
| X-Access-Token | 用於應用程式伺服器驗證的 OAuth 2.0 存取權杖 (請參閱 OAuth 權杖核發) | String | Y |
| ISCRYPT | 資料是否加密(0 = 未加密;始終傳遞 0) | Integer | Y |
請求正文
| 欄位名稱 | 描述 | 類型 | 必填 |
| appid | 應用程式 ID | String | Y |
| idp_index | IdP 索引代碼。參見 IdP 索引參考 | Integer | Y |
| idp_user_id | IdP 使用者唯一識別碼 | String | Y |
| require_token | 是否請求玩家令牌。使用 帳號刪除 API 時的 true; false 不使用時 | Boolean | Y |
Note
若要使用 帳號刪除 API,請將 require_token 設定為 true 以接收回應標頭中的 Authorization 值。如果您不使用帳戶刪除功能,請將其設定為false。
回應頭
| 欄位名稱 | 描述 | 類型 |
| Authorization | Session Token。僅在 require_token: true 時核發 | String |
| Content-Type | 回應資料格式(JSON)與字元編碼(UTF-8)資訊 | String |
| ISCRYPT | 回應是否加密 | Integer |
回應正文
| 欄位名稱 | 描述 | 類型 |
| result_code | 回應代碼 詳情 | Integer |
| result_msg | 結果留言 | String |
| token_validation | JWT 驗證結果 (JWT 驗證錯誤) | Object |
| token_validation.result_code | JWT驗證結果碼 | Integer |
| token_validation.result_msg | JWT 驗證結果訊息 | String |
| data.player_id | PlayerID | BigInteger |
| data.idp_index | IdP 指數 | Integer |
| data.idp_id | IdP 名稱 | String |
| data.idp_user_id | IdP 用戶 ID | String |
回應碼
| 代碼值 | 描述 |
| 0 | 成功 |
| 2499 | JWT 驗證失敗(請參閱 token_validation) |
| 4000 | 無效參數 |
| 4001 | 請求 JSON 錯誤 |
| 4200 | 不存在的 IdP |
| 5000 | 內部伺服器錯誤 |
| 7000 | 無效令牌 |
| 7001 | 標頭中沒有標記值 |
請求範例
{
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"idp_index": 3,
"idp_user_id": "google_67890",
"require_token": true
}
回應範例
標題
HTTP/1.1 200
Content-Type: application/json; charset=UTF-8
Authorization: abcdf7ebce779429ea878f91d5f1c8
ISCRYPT: 0
成功
{
"result_code": 0,
"result_msg": "SUCCESS",
"token_validation": {
"result_code": 0,
"result_msg": "success"
},
"data": {
"player_id": 100000002,
"idp_index": 3,
"idp_id": "GOOGLE",
"idp_user_id": "google_67890"
}
}
連結 IdP
將新的 IdP 連結到現有玩家帳號。僅在建立玩家 ID 後,IdP 連結才可用。
請求網址
請求頭
| 欄位名稱 | 描述 | 類型 | 必填 |
| X-Access-Token | 用於應用程式伺服器驗證的 OAuth 2.0 存取權杖 (請參閱 OAuth 權杖核發) | String | Y |
| ISCRYPT | 資料是否加密(0 = 未加密;始終傳遞 0) | Integer | Y |
請求正文
| 欄位名稱 | 描述 | 類型 | 必填 |
| appid | 應用程式 ID | String | Y |
| idp_index | IdP 索引代碼。參見 IdP 索引參考 | Integer | Y |
| idp_user_id | IdP 使用者唯一識別碼 | String | Y |
| player_id | PlayerID 連結 | BigInteger | Y |
回應正文
| 欄位名稱 | 描述 | 類型 |
| result_code | 回應代碼 詳情 | Integer |
| result_msg | 結果留言 | String |
| token_validation | JWT 驗證結果 (JWT 驗證錯誤) | Object |
| token_validation.result_code | JWT驗證結果碼 | Integer |
| token_validation.result_msg | JWT 驗證結果訊息 | String |
| data.player_id | PlayerID | BigInteger |
| data.idp_index | 連結 IdP 索引 | Integer |
| data.idp_id | 連結的 IdP 名稱 | String |
| data.idp_user_id | IdP 用戶 ID | String |
| #### 回應碼 | | |
| 代碼值 | 描述 | |
| --- | --- | |
| 0 | 成功 | |
| 1002 | 此 IdP 已連結到另一個玩家 | |
| 1003 | 相同的 IdP 類型已連結 | |
| 2002 | 不存在的玩家 | |
| 2499 | JWT 驗證失敗(請參閱 token_validation) | |
| 4000 | 無效參數 | |
| 4200 | 不存在的 IdP | |
| 5000 | 內部伺服器錯誤 | |
| 7000 | 無效令牌 | |
| 7001 | 標頭中沒有標記值 | |
請求範例
{
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"idp_index": 2,
"idp_user_id": "fb_12345678",
"player_id": 100000001
}
回應範例
成功
{
"result_code": 0,
"result_msg": "SUCCESS",
"token_validation": {
"result_code": 0,
"result_msg": "success"
},
"data": {
"player_id": 100000001,
"idp_index": 2,
"idp_id": "FACEBOOK",
"idp_user_id": "fb_12345678"
}
}
已連結至其他玩家
{
"result_code": 1002,
"result_msg": "Already connected other player",
"token_validation": {
"result_code": 0,
"result_msg": "success"
},
"data": {
"player_id": 100000002,
"idp_index": 2,
"idp_id": "FACEBOOK",
"idp_user_id": "fb_12345678"
}
}
取消連結 IdP
取消連結到玩家帳號的 IdP。僅在建立玩家 ID 後才可以使用 IdP 取消連結。
請求網址
請求頭
| 欄位名稱 | 描述 | 類型 | 必填 |
| X-Access-Token | 用於應用程式伺服器驗證的 OAuth 2.0 存取權杖 (請參閱 OAuth 權杖核發) | String | Y |
| ISCRYPT | 資料是否加密(0 = 未加密;始終傳遞 0) | Integer | Y |
請求正文
| 欄位名稱 | 描述 | 類型 | 必填 |
| appid | 應用程式 ID | String | Y |
| idp_index | IdP 索引代碼。參見 IdP 索引參考 | Integer | Y |
| idp_user_id | IdP 使用者唯一識別碼 | String | Y |
| player_id | PlayerID 取消連結 | BigInteger | Y |
回應正文
| 欄位名稱 | 描述 | 類型 |
| result_code | 回應代碼 詳情 | Integer |
| result_msg | 結果留言 | String |
| token_validation | JWT 驗證結果 (JWT 驗證錯誤) | Object |
| token_validation.result_code | JWT驗證結果碼 | Integer |
| token_validation.result_msg | JWT 驗證結果訊息 | String |
| #### 回應碼 | | |
| 代碼值 | 描述 | |
| --- | --- | |
| 0 | 成功 | |
| 2499 | JWT 驗證失敗(請參閱 token_validation) | |
| 4000 | 無效參數 | |
| 4006 | 沒有連結的 IdP 資訊 | |
| 4200 | 不存在的 IdP | |
| 7000 | 無效令牌 | |
| 7001 | 標頭中沒有標記值 | |
請求範例
{
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"idp_index": 2,
"idp_user_id": "fb_12345678",
"player_id": 100000001
}
回應範例
成功
{
"result_code": 0,
"result_msg": "SUCCESS",
"token_validation": {
"result_code": 0,
"result_msg": "success"
}
}
Note
當JWT驗證失敗時,您可以在token_validation欄位中查看詳細的錯誤訊息。詳細資訊請參閱JWT 驗證錯誤代碼。