ゲーム内のユーザー認証
どのように動作するか
ランチャーは、デスクトップアプリケーション経由で認証したユーザーのデータを、JWT形式の–xsolla-login-token
パラメーターでゲームに送信します。このパラメータを使用して、ゲーム内ユーザーの自動認証を設定できます。
主なJWTクレーム
トークンには、認証またはメールアドレス確認後の主な要求が含まれます。これらの要求の有無は、ユーザーデータベースや認証コールに依存しません。
クレーム | 種類 | 必須 | 説明 |
---|---|---|---|
exp | Unix Timestamp | 噫 | トークンの有効期限を設定する日時。デフォルトの有効期限は24時間です。ログインプロジェクトごとに有効期限を変更することができます。 |
iss | string | 噫 | トークンに署名したサービス:https://login.xsolla.com 。 |
iat | Unix Timestamp | 噫 | トークンを発行した日時。 |
sub | string (UUID) | 噫 | エクソーラログインサーバー側に書き込まれたユーザーID。 |
groups | array | 噫 | ユーザーが所属するグループのリスト。すべてのグループは次の形式で記述されます:
|
xsolla_login_project_id | string (UUID) | 噫 | ログインプロジェクトID。 |
username | string | ユーザー名。 | |
publisher_id | integer | ログインプロジェクトを所有するマーチャントのID。 | |
email | string | ユーザーのメールアドレス。 | |
payload | string | 認証時にペイロードパラメータで渡される追加情報。 | |
promo_email_agreement | boolean | ニュースレターの受信に同意します。次のいずれかの値を持つ可能性があります:
true です。ログインウィジェットの登録フォームに機能を追加するには:
| |
connection_information | string | ユーザーが生年月日を確認したかどうかを表示します。確認はoknameサービスを通じて行われます。 |
ソーシャル認証
ソーシャルネットワーク経由の認証後、トークンに含まれる要求。これらの要求の存在は、ユーザーデータベースに依存しません。
クレーム | 種類 | 必須 | 説明 |
---|---|---|---|
provider | string | 噫 | 認証に使用されるソーシャルネットワークの名前。可能な値:amazon 、apple 、baidu 、battlenet 、discord 、facebook 、github 、google 、kakao 、linkedin 、mailru 、microsoft 、msn 、naver 、ok 、paypal 、psn 、qq 、reddit 、steam 、twitch 、twitter 、vimeo 、vk 、wechat 、weibo 、yahoo 、yandex 、youtube 、xbox 。 |
id | string | 噫 | ソーシャルネットワークのユーザーID。 |
is_cross_auth | boolean | サイレント認証のリクエストが進行中であることを示します。 | |
social_access_token | string | 認証に使用するソーシャルネットワークアカウントのaccess_token パラメータ。この機能をセットアップするには、カスタマーサクセスマネージャーに問い合わせるか、csm@xsolla.comまで電子メールを送信してください | |
picture | string (URL) | ソーシャルネットワークにおけるユーザープロフィール画像へのリンク。 | |
birthday | date (RFC 3339) | ソーシャルネットワークにおけるユーザーの誕生日。 | |
gender | string | ソーシャルネットワークにおけるユーザー性別。 | |
name | string | ソーシャルネットワークにおけるユーザーニックネーム。 |
ユーザーフロー
- ユーザーがランチャーにログインします。
- ランチャーは、エクソーラログインサーバーからユーザー情報を含む認証トークンを受け取ります。
- ユーザーはランチャーからゲームを開始します。
- ゲームを起動する際、ランチャーはゲームクライアントに以下の引数を渡します:
--xsolla-login-token <token>
— エクソーラログインサーバーから取得した認証トークン。--xsolla-locale <locale>
— UI言語。
例:
Copy
game.exe --xsolla-login-token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InAudHVnb2x1a292QHhzb2xsYS5jb20iLCJleHAiOjE1ODU1MDYxMTMsImdyb3VwcyI6W10sImlhdCI6MTU4NDY0MjExMywiaXNzIjoiaHR0cHM6Ly9sb2dpbi54c29sbGEuY29tIiwicGFydG5lcl9kYXRhIjp7ImFkbWluIjp0cnVlfSwicGF5bG9hZCI6IiIsInByb21vX2VtYWlsX2FncmVlbWVudCI6dHJ1ZSwicHJvdmlkZXIiOiJ4c29sbGEiLCJyZWRpcmVjdF91cmwiOiIiLCJzdWIiOiIyNmYxNzI5Ni00Nzk5LTExZTgtOTBkMC00MjAxMGE4YTAwMTkiLCJ0eXBlIjoic29jaWFsIiwidXNlcm5hbWUiOiJzb21lX3VzZXJAbWFpbC5jb20iLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6Ikk2QTJrTEZPQ2JkcnUzamIxMjNyT3JmWnNkTnFpdVcxMjNpWTdKcW85OHI5b0hPbyIsInhzb2xsYV9sb2dpbl9wcm9qZWN0X2lkIjoiNDBkYjJlYTQtNWQ0Mi0xMWU2LWEzZmYtMDA1NDU2YTBlMTRhIn0.ZsTNiwY2iPp7HKqHs5g6JXzL2kv_RVuMNBlF-Tn2ccE --xsolla-locale en
- ゲームクライアントは、取得したユーザートークンをゲームサーバに送信し、以下のいずれかの場所でユーザーデータを取得します:
入手方法
- 以下の場所でユーザーデータの取得を実装します:
- ゲームがユーザーを自動的に認証するためのパラメータ処理を設定します。
- ゲームクライアントの引数
--xsolla-locale <locale>
で得られた言語に基づいてインターフェイス言語の選択を実装する。 - 新規ユーザーの追跡とゲームサーバー上でのアカウントの作成を実装します。
ゲームサーバー上でJWTをデコードする
- パブリッシャーアカウントであなたのプロジェクトを開き、「ログイン」セクションに移動します。
- ログインプロジェクトのペインで「構成する」をクリックします。
- 「セキュリティ」ブロックに移動し、「JWT署名」セクションを選択します。
- 「秘密キー」フィールドの値をコピーします。
- ライブラリを選択し、アプリケーションのサーバー側に接続します。
- ステップ4でコピーした値をデコード関数のエントリに渡す。
注意
秘密鍵は他人に教えないでください。漏洩した場合は、更新してください。
ログインAPIを使用したユーザーデータの取得
ユーザー詳細を取得するログインAPIメソッドを呼び出してユーザーデータを取得します。
ユーザー登録
新しいユーザーの登録を追跡するには:
- パブリッシャーアカウントであなたのプロジェクトを開き、「ログイン」セクションに移動します。
- ログインプロジェクトのペインで「構成する」をクリックします。
- 上部の設定ブロックで、「コールバックURL」をクリックします。
- 「コールバックURL」フィールドには、登録後にユーザーをリダイレクトするURLアドレスを入力します。
- ゲーム内で新しいアカウントの作成を構成します。登録後、ユーザーは「コールバックURL」フィールドでパラメータ
is_new=1
を使用して指定されたURLにリダイレクトされます。 - アカウントを入力するための情報を取得するには、ログインAPIメソッドを使用します。
例:
Copy
https://<callbackUrl>?is_new=1&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWR
UI言語
Example | Value | Meaning |
---|---|---|
–xsolla-locale en | “en”“ru”“cn”“tw”“fr”“de”“it”“pt”“es”“pl”“cs”“ko”“ar”“bg”“he”“ja”“tr”“th”“vi”“ro” | “English”“Русский”“简体中文”“中国传统的”“Français”“Deutsch”“Italiano”“Português”“Español”“Polski”“Čeština”“한국어”“العربية”“Български”“עברית”“日本語”“Türkçe”“ไทย”“Tiếng Việt”“Română” |
この記事は役に立ちましたか?
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。