クロスプラットフォームアカウント
どのように動作するか
用語集
アドミンページで次のログインプロジェクトタイプにアクセスできます:
- 標準ログインプロジェクトはメインアカウントを保存するために使用されるログインプロジェクトです。
- シャドウログインプロジェクトはプラットフォームアカウントを格納するために使用されるログインプロジェクトです。
メインアカウントは標準のログインプロジェクトで作成され、プラットフォームアカウントにリンクされているアカウントタイプです。メインアカウントは、異なるプラットフォームでプレーヤーを識別するために使用されます。
プラットフォームアカウントはシャドウログインプロジェクトで作成され、明確な公開プラットフォームに接続されているアカウントタイプです。プラットフォームアカウントを別のプラットフォームアカウントにリンクすることはできません。また、メインアカウントからアカウントのリンクを解除することもできません。
パブリッシングプラットフォームは、ゲーム配信に使用されるゲームプラットフォーム(Steam、PlayStation、Xboxなど)です。
クロスプラットフォームアカウントは、メインアカウントとプラットフォームアカウントがリンクしているアカウントです。
明確なプラットフォームでゲームを行うすべてのユーザーアカウントは、シャドウログインプロジェクトのプラットフォームアカウントに対応している必要があります。たとえば、ユーザーがXboxおよびPlayStationプラットフォームで所有するゲームのアカウントを持っている場合、シャドウログインプロジェクトプラットフォームアカウントは、対応するXboxおよびPlayStationプラットフォームアカウントにリンクする必要があります。
クロスプラットフォームアカウントを使用する
クロスプラットフォームアカウントでは、次のことができます:
- 異なるプラットフォームで1つのゲームアカウントを持っている
- プラットフォームアカウントからソーシャルアカウントの友達リストを取得する
メインアカウントとプラットフォームアカウントがリンクされている場合:
- ユーザーはプラットフォームで認証します。
- エクソーラログインサーバーはメインアカウントトークンをユーザーに送信します。
- エクソーラログインサーバーはメインアカウントユーザーを認証します。
クロスプラットフォームアカウントを使用する場合、トークン内のユーザーIDはメインアカウントIDと同じになります。JWT>sub
クレームでユーザーIDが見つかります。
アカウントリンキングフロー
ユーザーがメインアカウントを持っている場合、プラットフォームでの認証中にプラットフォームアカウントをリンクできます。フローは以下のとおりです:- プレーヤーは初めてゲームコンソールプラットフォームでゲームに参加します。
- ゲームUIには、プラットフォームアカウントをメインアカウントにリンクすることを提案するメッセージが表示されます。
- ユーザーがアプリケーションを起動し、メインアカウントを入力します。
- アプリケーションは、
Create code for linking accounts リクエストをエクソーラログインサーバーに送信します。 - アプリケーションUIは、アカウントをリンクするためのコードをユーザーに表示します。
- ユーザーはゲームのコンソールバージョンに戻り、コードを入力します。
- ゲームサーバーは、
Link accounts by code リクエストをエクソーラログインサーバーに送信します。 - ゲームコンソールに確認メッセージが表示されます。
使用に適した方
ログインを統合済みで、公開プラットフォームアカウントを持っているパートナー。
入手方法
クロスプラットフォームアカウントを統合するには、アドミンページの次のパラメーターが必要です:
main_project_id
-UUID形式の標準ログインプロジェクトのID。例えば:f6c5011a-715e-4e5e-b7b1-a4812d85b8c8
。shadow_project_id
-UUID形式のシャドウログインプロジェクトのID。このプロジェクトはシャドウログインプロジェクトとして使用されます。シャドウログインプロジェクトを作成し、ログインプロジェクト設定でそのプロジェクトにpublisher_project_id
を指定します。shadow_project_id
は作成されたプロジェクトのID。publisher_project_id
-プロジェクトのID。パラメータは、プロジェクト設定> 一般設定> プロジェクトIDに表示されます。
shadow_project_id
を送信し、publisher_project_id
パラメータをカスタマーサクセスマネージャーに送信して、次のOAuth 2.0クライアントパラメータを取得します:
client_id
-OAuth 2.0クライアントIDclient_secret
-OAuth 2.0クライアント秘密鍵
クロスプラットフォームアカウントを統合するアルゴリズムは次のとおりです:
- 次のユーザー認証を実装します:
- アカウントをリンクします:
メインアカウントでのユーザーを認証する
メインアカウントはmain_project_id
が指定されたログインプロジェクトに作成されます。登録と認証には、ログインウィジェットとプラットフォームアカウントでのユーザーを認証する
プラットフォーム経由のユーザー登録と認証については、メソッドを選択し、指示に従ってください。これらのメソッドを組み合わせることができます。たとえば、Xboxプラットフォームでサイレント認証を使用し、別のプラットフォームでCustom ID経由の認証
プラットフォームアカウントを作成するには、ゲームサーバーで
publisher_project_id
またはshadow_project_id
パラメータ(それらが渡されない場合、エクソーラログインサーバーはエラーを返します)- サーバートークン
social_profile
パラメータのユーザープラットフォームアカウント情報
この認証コールを使用すると、異なるプラットフォームからユーザーの友達のリストを取得できなくなります。認証に使用できるプラットフォームのリストは制限されていません。
認証フロー:
- ユーザーがゲームを起動すると、ゲームクライアントは認証リクエストをゲームサーバーに送信します。
- ゲームサーバーは、既存のユーザー
custom ID を生成または使用します。 - ゲームサーバーは、
Auth by custom ID リクエストをエクソーラログインサーバーに送信し、プラットフォームとその上のユーザー識別子(パラメータplatform
とuser_id
)を指定します。渡されたカスタムIDを持つユーザーが見つからない場合、新しいユーザーが作成されます。 - エクソーラログインサーバーは、ゲームサーバーにトークンを送信します。
リクエストの例:
http
- http
- curl
POST https://login.xsolla.com/api/users/login/server_custom_id?publisher_project_id=<publisher_project_id> HTTP/1.1
X-Server-Authorization: <server_token>
Content-Type: application/json
{
"server_custom_id": "secret_value",
"social_profile": {
"platform": "xbox",
"user_id": "123"
}
}
curl --request POST \
--url 'https://login.xsolla.com/api/users/login/server_custom_id?publisher_project_id=publisher_project_id' \
--header 'content-type: application/json' \
--header 'x-server-authorization: server_token' \
--data '{"server_custom_id":"secret_value","social_profile":{"platform":"xbox","user_id":"123"}}'
応答の例:
- http
HTTP/1.1 200 OK
Content-Type: application/json
{
"token": "<platform_user_token>"
}
サイレント認証
サイレント認証をセットアップするには、シャドウログインプロジェクトを作成して説明をフォローしてください。ゲームサーバーのサイレント認証方式を使用して、プラットフォームアカウントを作成します。リンキングコードを取得する
リンキングコードを取得するには:
Create code for linking accounts コールを利用する。メインアカウントで認証中に受け取ったユーザートークンをこのコールに渡します。- 受け取ったコードをユーザーに表示します。
リクエストの例:
http
- http
- curl
POST https://login.xsolla.com/api/users/account/code HTTP/1.1
Authorization: Bearer <main_user_token>
curl --request POST \
--url https://login.xsolla.com/api/users/account/code \
--header 'authorization: main_user_token'
応答の例:
- http
HTTP/1.1 200 OK
Content-Type: application/json
{
"code": "123456"
}
アカウントをリンクする
code
パラメータに、ユーザーがコンソールプラットフォームで入力したリンキングコード値をこのコールに渡します。
リクエストの例:
http
- http
- curl
POST https://login.xsolla.com/api/users/account/link HTTP/1.1
X-Server-Authorization: <server_token>
Content-Type: application/json
{
"code": "123456",
"platform": "xbox",
"user_id": "123",
"publisher_project_id": 44056
}
curl --request POST \
--url https://login.xsolla.com/api/users/account/link \
--header 'content-type: application/json' \
--header 'x-server-authorization: server_token' \
--data '{"code":"123456","platform":"xbox","publisher_project_id":44056,"user_id":"123"}'
応答の例:
- http
HTTP/1.1 204 No Content
誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。