コンテンツにスキップ

ログインの検証とユーザー情報の取得

ログイン検証とユーザー情報の取得 は、一時的な認証コード(state)を使用してログイン情報を検証し、ログインページからリダイレクトされ、ユーザー情報を返すAPIです。ユーザー情報を返す際には、アクセストークンとリフレッシュトークンが含まれます。

ログイン検証およびユーザー情報取得 APIリクエストによって返される値は、主に以下の通りです。

  • IdP情報
  • ユーザー情報
  • アクセストークン/リフレッシュトークン
Note

ログイン確認が成功した後、ユーザー情報またはトークン情報が必要なケースは次のとおりです。

  • ウェブログインの検証に成功し、PlayerIDが生成されたユーザーには、レスポンスにユーザー情報(user_info)が含まれます。ただし、ユーザー情報が変更された場合や別途確認が必要な場合は、ユーザー情報取得APIを呼び出して確認できます。
  • アクセストークン/リフレッシュトークンが必要な場合は、トークンが期限切れになる前に再度ウェブログインを行うか、トークンリフレッシュ APIを通じて更新する必要があります。

リクエストURL

環境 URL
本番環境 https://weblogin.withhive.com/token
サンドボックス https://sandbox-weblogin.withhive.com/token
HTTPメソッド POST
Content-Type application/json

リクエストボディ

フィールド名 タイプ 説明 必須
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: Hive
  • 2: Facebook
  • 3: Google
  • 9: Apple
idp_user_id 文字列 IdPログインに使用される一意の識別子
enc_idp 文字列 IdP情報の暗号化キー 外部PC自動ログイントークン発行キー
user_info JSON ユーザー情報
user_info.auth_ver 文字列 認証サーバーバージョン
  • v4: Auth v4
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: Hive
  • 2: Facebook
  • 3: Google
  • 9: 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_indexidp_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"
}

レスポンスボディサンプル (失敗)

これは、次の条件が満たされたときに返されるレスポンスデータの例です。

  • ウェブログインが失敗した場合
{
  "code": 1050
}

外部PC自動ログイントークン発行

  • Hiveクロスプレイランチャーを実行すると、対応するトークン値(web_idp_token)が自動ログインのために渡されます。
  • web_idp_tokenは、ゲームを起動するたびに新たに取得する必要があるワンタイムトークンです。
Note
  • セキュリティ上の理由から、リクエストを送信するenc_idp値を公開しないように注意してください。
  • API呼び出しを行う際には、サーバー間通信を適用することが不可欠です。

リクエストURL

環境 URL
本番 https://authcp.qpyou.cn/auth/get-web-idp-token
サンドボックス https://sandbox-authcp.qpyou.cn/auth/get-web-idp-token
HTTPメソッド POST
コンテンツタイプ application/json

リクエスト本文

フィールド名 タイプ 説明 必須
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復号エラー