コンテンツにスキップ

カスタムWebログインの実装

このガイドでは、Hive Platformが提供するWebログインページの代わりに、HiveサーバーAPIを使用してWebログインを直接実装する方法を説明します。独自のログインUIを構築し、IdP認証を自分で処理する場合に参照してください。

Note

カスタムWebログインAPIを利用するには、Hiveコンソールでアプリの登録とhive_certification_keyの発行を完了する必要があります。

概要

次のような場合に、カスタムWebログインを使用します。

  • 独自のログインUI/UXを適用する場合
  • 既存のWebサイトのデザインに合わせたログイン画面を実装する場合
  • Webログインページにリダイレクトせず、自分のページ内でログインを処理する場合

API一覧

APIエンドポイント 説明
POST /game/auth/signinidp IdPログイン
POST /game/auth/connect IdP連携
POST /game/auth/disconnect IdP連携の解除
POST /game/player/delete アカウント削除

共通リクエストヘッダー

ヘッダー名 型 必須 説明
Content-Type String Y application/json固定
Authorization String YまたはN セッショントークン。トークン検証が必要なAPIでは必須、それ以外では任意
ISCRYPT Integer Y 暗号化を使用するかどうか。0固定

共通レスポンスヘッダー

ヘッダー名 型 説明
Authorization String 新しく発行されたセッショントークン。IdPログインリクエストでrequire_token: trueを設定した場合のみ発行
ISCRYPT Integer レスポンスが暗号化されているかどうか

共通レスポンス形式

成功レスポンス

{
    "result_code": 0,
    "result_msg": "SUCCESS",
    "data": { }
}

失敗レスポンス

{
    "result_code": 4000,
    "result_msg": "Request has invalid format.",
    "data": null
}

IdPログイン

IdP情報を使用して新しいプレイヤーを作成します。IdPがすでに登録されている場合は、既存のプレイヤー情報を返します。ログインに成功すると、data.player_idでPlayerIDを確認できます。

Warning

カスタムWebログインAPIでは、ゲスト(GUEST、idp_index: 0)アカウントの作成をサポートしていません。

Note

アカウント削除APIを利用する場合は、require_tokenをtrueに設定して、レスポンスヘッダーでAuthorizationの値を受け取ってください。アカウント削除機能を利用しない場合は、falseに設定できます。

リクエストURL

環境 URL
本番 https://auth.qpyou.cn/game/auth/signinidp
サンドボックス https://sandbox-auth.qpyou.cn/game/auth/signinidp
HTTPメソッド POST
Content-Type application/json

リクエストボディ

フィールド名 型 説明 必須
appid String ゲームのアプリID(AppID) Y
idp_index Integer IdPインデックスコード。IdPコード定義を参照 Y
idp_user_id String IdPユーザーの一意の識別子 Y
hive_certification_key String Hive認証キー Y
require_token Boolean プレイヤートークンを要求するかどうか。アカウント削除APIを利用する場合はtrue、それ以外はfalseに設定 Y

リクエストボディの例

{
    "appid": "com.com2us.example",
    "idp_index": 3,
    "idp_user_id": "google_67890",
    "hive_certification_key": "your_certification_key",
    "require_token": true
}

レスポンスヘッダー

フィールド名 型 説明
Content-Type String レスポンスデータ形式(JSON)と文字エンコーディング(UTF-8)の情報
Authorization String セッショントークン

レスポンスヘッダーの例

HTTP/1.1 200
Content-Type: application/json; charset=UTF-8
Authorization: abcdf7ebce779429ea878f91d5f1c8
Iscrypt: 0

レスポンスボディ

フィールド名 型 説明
result_code Integer 結果コード。0は成功を示す
result_msg String 結果メッセージ
data.player_id Integer PlayerID
data.idp_index Integer IdPインデックス
data.idp_id String IdP名
data.idp_user_id String IdPユーザーID

レスポンスボディの例(成功)

{
    "result_code": 0,
    "result_msg": "SUCCESS",
    "data": {
        "player_id": 100000002,
        "idp_index": 3,
        "idp_id": "GOOGLE",
        "idp_user_id": "google_67890"
    }
}

レスポンスボディの例(失敗)

{
    "result_code": 4002,
    "result_msg": "Invalid certfication key"
}

エラーコード

コード 説明 備考
4002 認証キーエラー
4200 IdPが存在しない
5000 データベースエラー

IdP連携

既存のプレイヤーアカウントに新しいIdPを連携します。IdPログインAPIでログインした後に、このAPIを呼び出す必要があります。

リクエストURL

環境 URL
本番 https://auth.qpyou.cn/game/auth/connect
サンドボックス https://sandbox-auth.qpyou.cn/game/auth/connect
HTTPメソッド POST
Content-Type application/json

リクエストボディ

フィールド名 型 説明 必須
appid String ゲームのアプリID(AppID) Y
idp_index Integer IdPインデックスコード。IdPコード定義を参照 Y
idp_user_id String IdPユーザーの一意の識別子 Y
player_id Integer 連携するPlayerID Y
hive_certification_key String Hive認証キー Y

リクエストボディの例

{
    "appid": "com.com2us.example",
    "idp_index": 2,
    "idp_user_id": "fb_12345678",
    "player_id": 100000001,
    "hive_certification_key": "your_certification_key"
}

レスポンスボディ

フィールド名 型 説明
result_code Integer 結果コード。0は成功を示す
result_msg String 結果メッセージ
data.player_id Integer PlayerID
data.idp_index Integer 連携したIdPのインデックス
data.idp_id String 連携したIdP名
data.idp_user_id String IdPユーザーID

レスポンスボディの例(成功)

{
    "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",
    "data": {
        "player_id": 100000002,
        "idp_index": 2,
        "idp_id": "FACEBOOK",
        "idp_user_id": "fb_12345678"
    }
}

エラーコード

コード 説明 備考
1002 このIdPは別のプレイヤーと連携済み
1003 同じ種類のIdPが連携済み
2002 プレイヤーが存在しない
4002 認証キーエラー
4200 IdPが存在しない
5000 データベースエラー

IdP連携の解除

プレイヤーアカウントに連携されているIdPの連携を解除します。IdPログインAPIでログインした後に、このAPIを呼び出す必要があります。

リクエストURL

環境 URL
本番 https://auth.qpyou.cn/game/auth/disconnect
サンドボックス https://sandbox-auth.qpyou.cn/game/auth/disconnect
HTTPメソッド POST
Content-Type application/json

リクエストボディ

フィールド名 型 説明 必須
appid String ゲームのアプリID(AppID) Y
idp_index Integer IdPインデックスコード。IdPコード定義を参照 Y
idp_user_id String IdPユーザーの一意の識別子 Y
player_id Integer PlayerID Y
hive_certification_key String Hive認証キー Y

リクエストボディの例

{
    "appid": "com.com2us.example",
    "idp_index": 2,
    "idp_user_id": "fb_12345678",
    "player_id": 100000001,
    "hive_certification_key": "your_certification_key"
}

レスポンスボディ

フィールド名 型 説明
result_code Integer 結果コード。0は成功を示す
result_msg String 結果メッセージ

レスポンスボディの例(成功)

{
    "result_code": 0,
    "result_msg": "SUCCESS"
}

レスポンスボディの例(失敗)

{
    "result_code": 4002,
    "result_msg": "Invalid certfication key"
}

エラーコード

コード 説明 備考
4002 認証キーエラー
4006 連携済みのIdP情報がない
4200 IdPが存在しない
7000 無効なトークン

アカウント削除

プレイヤーアカウントを削除します。IdPログインAPIでログインした後に、このAPIを呼び出す必要があります。

このAPIではトークン検証が必要なため、事前に次の手順を完了してください。

  1. IdPログインAPIを呼び出す際に、require_tokenをtrueに設定します。
  2. IdPログインAPIのレスポンスヘッダーで返されるAuthorizationの値を保存します。
  3. このAPIを呼び出す際に、保存したAuthorizationの値をリクエストヘッダーに含めます。
Warning

アカウントの削除は取り消せません。削除する前に、ユーザーに十分に案内してください。

リクエストURL

環境 URL
本番 https://auth.qpyou.cn/game/player/delete
サンドボックス https://sandbox-auth.qpyou.cn/game/player/delete
HTTPメソッド POST
Content-Type application/json

リクエストヘッダー

ヘッダー名 型 説明 必須
Authorization String IdPログインの呼び出し時にrequire_token: trueを設定すると、レスポンスヘッダーで返されるセッショントークン Y

リクエストボディ

フィールド名 型 説明 必須
appid String ゲームのアプリID(AppID) Y
player_id Integer 削除するPlayerID Y
did Integer DID(Instance ID)。0固定 Y
hive_certification_key String Hive認証キー Y

リクエストボディの例

{
    "appid": "com.com2us.example",
    "player_id": 100000001,
    "did": 0,
    "hive_certification_key": "your_certification_key"
}

レスポンスボディ

フィールド名 型 説明
result_code Integer 結果コード。0は成功を示す
result_msg String 結果メッセージ

レスポンスボディの例(成功)

{
    "result_code": 0,
    "result_msg": "SUCCESS"
}

レスポンスボディの例(失敗)

{
    "result_code": 7000,
    "result_msg": "Invalid token."
}

エラーコード

コード 説明 備考
4002 認証キーエラー
7000 無効なトークン
7001 ヘッダーにトークンがない

IdPコード定義

標準IdP

コード IDP_ID 説明
0 GUEST ゲスト
1 HIVE メンバーシップアカウント
2 FACEBOOK Facebook
3 GOOGLE Google
4 QQ QQ
5 WEIBO Weibo
6 VK VK
7 WECHAT WeChat
8 APPLE Apple Game Center
9 SIGNIN_APPLE Sign in with Apple
10 LINE LINE
11 TWITTER Twitter
12 WEVERSE Weverse
13 NAVER Naver
14 GOOGLE_PLAY_GAMES Google Play Games
15 HUAWEI Huawei
16 FUNTAP Funtap
18 STEAM Steam
19 X X(旧Twitter)
20 TELEGRAM Telegram
21 XIAOMI Xiaomi
22 OPPO OPPO
23 VIVO VIVO

カスタムIdP

コード IDP_ID 説明
1100 CUSTOM_GAME ゲーム会社が提供するIdP