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 を確認できます。
リクエストURL
リクエストヘッダー
| フィールド名 | 説明 | タイプ | 必須 |
| 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 | セッショントークン。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 を既存のプレーヤー アカウントにリンクします。 IdP リンクは、プレーヤー ID が作成された後にのみ使用できます。
リクエストURL
リクエストヘッダー
| フィールド名 | 説明 | タイプ | 必須 |
| 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 { #disconnect } のリンクを解除
プレーヤー アカウントにリンクされている IdP のリンクを解除します。 IdP のリンク解除は、プレーヤー ID が作成された後にのみ使用できます。
リクエストURL
リクエストヘッダー
| フィールド名 | 説明 | タイプ | 必須 |
| 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 検証エラーコードを参照してください。