ログインの検証とユーザー情報の取得
ログイン検証とユーザー情報の取得 は、一時的な認証コード(state
)を使用してログイン情報を検証し、ログインページからリダイレクトされ、ユーザー情報を返すAPIです。ユーザー情報を返す際には、アクセストークンとリフレッシュトークンが含まれます。
ログイン検証およびユーザー情報取得 APIリクエストによって返される値は、主に以下の通りです。
- IdP情報
- ユーザー情報
- アクセストークン/リフレッシュトークン
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 | 整数 | Webログイン応答コード | |
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 | GUESTは他のIdPでプレイしてもデフォルトで作成されます |
user_info.is_blocked | ブール値 | 利用停止状態 | true : 停止されたユーザーfalse : 通常のユーザー
|
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復号エラー |