カスタムユーザーデータストレージ
カスタムユーザーデータストレージを使用する場合、エクソーラログインは仲介者として機能し、すべてのユーザー識別データはユーザー側で保管されます。エクソーラログインは、ウェブフックのヘッダーおよび本文に含まれるトークンで認証データを渡します。
POST
リクエストはhttp://localhost:3000/my-webhook-endpoint
のようなURLには届きません。Ngrokを使うと、外部からのアクセス用のトンネルを作ることができ、エクソーラからのリクエストをローカルで受け取ることができます。これについては、ngrokのドキュメンテーションで詳しく読むことができます。
統合をローカルでテストしている場合、エクソーラからのPOST
リクエストはhttp://localhost:3000/my-webhook-endpoint
のようなURLには届きません。Ngrokを使うと、外部からのアクセス用のトンネルを作ることができ、エクソーラからのリクエストをローカルで受け取ることができます。これについては、ngrokのドキュメンテーションで詳しく読むことができます。統合フロー
クライアントとして、ログインウィジェットまたはLogin APIコールを使用するアプリケーションを使用できます。クライアントとエクソーラログインサーバー間のインタラクションフローは以下のとおりです:
- クライアントはエクソーラログインに送信します。リクエストのフォーマットについてはJWTおよびパスワードエンドポイントで説明されています。
- エクソーラログインサーバーはあなたのサーバーにウェブフックを送信します。ヘッダーには
“request_type”: “gateway_token”
パラメータを持つサーバーJWTが含まれます。トークン検証をセットアップすrには、説明に従ってください。ユーザー識別データの一部は、ウェブフックの本文で渡されます。 - ウェブフックの受信を確認するには、サーバーは以下を返す必要があります:
- 応答が成功した場合は
200
、201
、または204
HTTPコード。 - 指定されたユーザーが見つからなかった場合、または無効な署名が渡された場合は、問題の説明を含む
400
HTTPコード。サーバー上で、一時的な問題が発生した場合、ウェブフックハンドラーは5xx
HTTPコードを返すこともあります。
- 応答が成功した場合は
- エクソーラログインサーバーはサーバーから応答を処理し、認証トークンをクライアントに返します。
- クライアントは応答を処理します。
ユーザー識別後にユーザー情報をJWTに追加したい場合は、レスポンスボディに任意のパラメータセットを含むJSONオブジェクトを返してください。このオブジェクトは、JWTのpartner_data
フィールドに保存されます。
- メールアドレス
- ニックネーム
- 生年月日
- 名
- 姓
- あなたのサーバー上のユーザーID
パラメータ | 種類 | 説明文 |
---|---|---|
attr_type | string | サービス属性に対するユーザーのアクセス レベルの定義:
|
キー | string | ユーザーの属性を識別するための属性名。ユーザーごとにユニークである必要があります。 最大長さ:256シンボル。数字、ラテン文字、ハイフン、アンダースコアを使用することができます。 |
権限 | string or null | ユーザーの属性へのアクセスのタイプは、メソッドによって返される属性のリストに影響します: 可能な値: public 、private (デフォルト)。 |
read_only | string | 属性が変更から保護されているかどうか。デフォルトでは、false と属性値の変更は許可されています。 |
値 | string | ユーザーの属性の値。 最大長さ:256シンボル。 |
ユーザー登録
- クライアントは、
Register new user POST
リクエストをエクソーラログインサーバーに送信します。リクエストには、Authorization: Bearer {JWT}
ヘッダーと、以下の必須パラメータを含める必要があります:projectId
クエリパラメータ — パブリッシャーアカウントのログインプロジェクトのID。- 本文パラメータ:
username
— ユーザー名。許可される長さ:3~255文字。password
— ユーザーのパスワード。許可される長さ:6~100文字。email
— ユーザーのメールアドレス。許可される長さ:1~255文字。
- エクソーラログインサーバーは、「新規ユーザー検URL」にウェブフックを送信します。応答は、このインタラクションフローで説明されている形式である必要があります。応答では、ユーザー属性のリストや必要なJSONオブジェクトを指定できます。レスポンスで提供するJSONオブジェクトは、ユーザーのJWTの
partner_data
フィールドに記録されます。
ウェブフックの例:
http
- http
- curl
1POST https://your.hostname/your_registration_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{
6 "email":"j.smith@email.com",
7 "password":"123456",
8 "username":"j.smith@email.com"
9}
1curl --request POST \
2 --url 'https://your.hostname/your_registration_uri' \
3 --header 'authorization: bearer_JWT' \
4 --header 'content-type: application/json' \
5 --data '{"email":"j.smith@email.com","password":"123456","username":"j.smith@email.com"}'
ユーザー属性を含むウェブフックへの応答の例:
- json
1{
2 "attributes": [
3 {
4 "attr_type": "server",
5 "key": "company",
6 "permission": "private",
7 "value": "facebook-promo"
8 },
9 {
10 "attr_type": "server",
11 "key": "custom-id",
12 "permission": "private",
13 "value": 48582
14 }
15 ]
16}
JSONオブジェクトを使用したウェブフックへの応答の例:
- json
1{
2 "id": 123456,
3 "role": "scout"
4}
email
にフラグが付けられ、未確認の時、ユーザーデータはエクソーラデータベースに書き込まれます。ユーザーはアカウント確認メールを受け取ります。- ログインウィジェットを統合している場合、ユーザーは次のメッセージとともにページにリダイレクトされます:{email}に送信した指示に従って、アカウントを確認してください。
- ユーザー登録に失敗した場合、認証ウィジェットに表示されるエラーメッセージを提供することができます。これを行うには、ユーザ作成リクエストの応答で、以下の詳細を持つ
error
オブジェクトを渡します:code
パラメータで、エラーコード(例:011-002
)を指定します。description
パラメータには、エラーメッセージのテキストを提供します。
- json
1{
2 "error": {
3 "code": "011-002",
4 "description": "<string>"
5 }
6}
ユーザー名とパスワードによる認証
- クライアントは、
Auth by username and password POST
リクエストをエクソーラログインサーバーに送信します。リクエストには、Authorization: Bearer {JWT}
ヘッダーと、以下の必須パラメータを含める必要があります:projectId
クエリパラメータ — パブリッシャーアカウントのログインプロジェクトのID。- 本文パラメータ:
username
— ユーザー名。許可される長さ:3~255文字。password
— ユーザーのパスワード。許可される長さ:6~100文字。
- エクソーラログインサーバーは、「ユーザー検証URL」にウェブフックを送信します。応答は、このインタラクションフローで説明されている形式である必要があります。応答では、ユーザー属性のリストや必要なJSONオブジェクトを指定できます。レスポンスで提供するJSONオブジェクトは、ユーザーのJWTの
partner_data
フィールドに記録されます。
ユーザー検証URLウェブフックの例:
http
- http
- curl
1POST https://your.hostname/your_authentication_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{
6 "email":"j.smith@email.com",
7 "password":"123456",
8 "username":"j.smith@email.com"
9}
1curl --request POST \
2 --url 'https://your.hostname/your_authentication_uri' \
3 --header 'authorization: bearer_JWT' \
4 --header 'content-type: application/json' \
5 --data '{"email":"j.smith@email.com","password":"123456","username":"j.smith@email.com"}'
ユーザー属性を含むウェブフックへの応答の例:
- json
1{
2 "attributes": [
3 {
4 "attr_type": "server",
5 "key": "company",
6 "permission": "private",
7 "value": "facebook-promo"
8 },
9 {
10 "attr_type": "server",
11 "key": "custom-id",
12 "permission": "private",
13 "value": 48582
14 }
15 ]
16}
JSONオブジェクトを使用したウェブフックへの応答の例:
- json
1{
2 "id": 123456,
3 "role": "scout"
4}
- ユーザー認証が失敗した場合、認証ウィジェットに表示するエラーメッセージを提供できます。これを行うには、ユーザー作成リクエストの応答で、以下の詳細情報を含む
error
オブジェクトを渡します:code
パラメータには、エラーコード(例えば、011-002
)を指定します。description
パラメータには、エラーメッセージのテキストを入力します。
- エクソーラログインサーバーはユーザーJWTを生成します。
- ユーザーは、
token
クエリパラメータを使用してlogin_url
にリダイレクトされます。このtoken
パラメータには、ユーザーJWTが含まれています。
電話番号経由のパスワードレス認証
- クライアントは認証フォームを開き、ユーザーが電話番号を入力できるようにします。
- ユーザーは自分の電話番号を入力します。
- クライアントは、エクソーラログインサーバーに
Start auth by phone number POST
リクエストを送信します。リクエストには、Authorization: Bearer {JWT}
ヘッダーと、以下の必須パラメータを含める必要があります:projectId
クエリパラメータ — パブリッシャーアカウントのログインプロジェクトのID。phone_number
本文パラメータ — ユーザーの電話番号。
- クライアントは、ユーザーが検証コードを入力するためのフィールドを表示します。
- ユーザーは受信した検証コードを入力します。
- クライアントは、エクソーラサーバーに
Complete auth by phone number POST
リクエストを送信します。リクエストには、Authorization: Bearer {JWT}
ヘッダーと、以下の必須パラメータを含める必要があります:projectId
クエリパラメータ — パブリッシャーアカウントのログインプロジェクトのID。- 本文パラメータ:
code
— 確認コード。phone_number
— ユーザーの電話番号。operation_id
— 確認コードID。
- 初回ユーザー認証の場合、エクソーラログインサーバーはパスワードレスログインURLにウェブフックを送信します。レスポンスは、このインタラクションフローで説明されている形式である必要があります。応答では、ユーザー属性のリストや必要なJSONオブジェクトを指定できます。応答で提供するJSONオブジェクトは、ユーザーのJWTの
partner_data
フィールドに記録されます。 - ユーザー認証が失敗した場合、認証ウィジェットに表示するエラーメッセージを提供できます。これを行うには、ユーザー作成リクエストへのレスポンスで、以下の詳細を含む
error
オブジェクトを渡します。code
パラメータには、エラーコード(例:011-002
)を指定します。description
パラメータには、エラーメッセージのテキストを入力します。
http
- http
- curl
1POST https://your.hostname/your_phone_authentication_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{
6 "login": "+12025550140",
7 "type": "phone"
8}
1curl --request POST \
2 --url 'https://your.hostname/your_phone_authentication_uri' \
3 --header 'authorization: bearer_JWT' \
4 --header 'content-type: application/json' \
5 --data '{"login":"+12025550140","type":"phone"}'
ユーザー属性を含むウェブフックへの応答の例:
- json
1{
2 "attributes": [
3 {
4 "attr_type": "server",
5 "key": "company",
6 "permission": "private",
7 "value": "facebook-promo"
8 },
9 {
10 "attr_type": "server",
11 "key": "custom-id",
12 "permission": "private",
13 "value": 48582
14 }
15 ]
16}
JSONオブジェクトを使用したウェブフックへの応答の例:
- json
1{
2 "id": 123456,
3 "role": "scout"
4}
メール経由でパスワードレス認証
- クライアントは認証フォームを開き、ユーザーがメールアドレスを入力できるようにします。
- ユーザーは自分のメールアドレスを入力します。
- クライアントは、エクソーラログインサーバーに
Start auth by email POST
リクエストを送信します。リクエストには、Authorization: Bearer {JWT}
ヘッダーと、以下の必須パラメータを含める必要があります:projectId
クエリパラメータ — パブリッシャーアカウントのログインプロジェクトのID。email
本文パラメータ — ユーザーのメールアドレス。
- クライアントは、ユーザーが検証コードを入力するためのフィールドを表示します。
- ユーザーは受信した検証コードを入力します。
- クライアントは、エクソーラサーバーに
Complete auth by email POST
リクエストを送信します。リクエストには、Authorization: Bearer {JWT}
ヘッダーと、以下の必須パラメータを含める必要があります:projectId
クエリパラメータ — パブリッシャーアカウントのログインプロジェクトのID。- 本文パラメータ:
username
— ユーザー名。許可された長さ:3~255文字。code
— 確認コード。email
— ユーザーのメールアドレスoperation_id
— 確認コードID
- 初回ユーザー認証の場合、エクソーラログインサーバーはパスワードレスログインURLにウェブフックを送信します。レスポンスは、このインタラクションフローで説明されている形式である必要があります。応答では、ユーザー属性のリストや必要なJSONオブジェクトを指定できます。応答で提供するJSONオブジェクトは、ユーザーのJWTの
partner_data
フィールドに記録されます。 - ユーザー認証が失敗した場合、認証ウィジェットに表示するエラーメッセージを提供できます。これを行うには、ユーザー作成リクエストへのレスポンスで、以下の詳細を含む
error
オブジェクトを渡します。code
パラメータには、エラーコード(例:011-002
)を指定します。description
パラメータには、エラーメッセージのテキストを入力します。
ウェブフックの例:
http
- http
- curl
1POST https://your.hostname/your_email_authentication_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{
6 "email": "user@mail.com",
7 "type": "email"
8}
1curl --request POST \
2 --url 'https://your.hostname/your_email_authentication_uri' \
3 --header 'authorization: bearer_JWT' \
4 --header 'content-type: application/json' \
5 --data '{"email": "user@mail.com","type": "email"}'
ユーザー属性を含むウェブフックへの応答の例:
- json
1{
2 "attributes": [
3 {
4 "attr_type": "server",
5 "key": "company",
6 "permission": "private",
7 "value": "facebook-promo"
8 },
9 {
10 "attr_type": "server",
11 "key": "custom-id",
12 "permission": "private",
13 "value": 48582
14 }
15 ]
16}
JSONオブジェクトを使用したウェブフックへの応答の例:
- json
1{
2 "id": 123456,
3 "role": "scout"
4}
ソーシャルネットワーク経由の認証
ソーシャルネットワーク経由の認証時にユーザーデータを取得するには、アドミンページのログインプロジェクトの設定(セクションユーザーデータベース > ストレージ > カスタムストレージ)で、ソーシャルログインURLを指定します。ソーシャルネットワークから受信したデータを含むリクエストがこのURLに送信されます。
認証フロー:
- クライアントは、エクソーラログインサーバーに
Auth via social network POST
リクエストを送信します。リクエストには、Authorization: Bearer {JWT}
ヘッダーと、以下の必須パラメータを含める必要があります:projectId
クエリパラメータ — パブリッシャーアカウントのログインプロジェクトのID。provider_name
パスパラメータ — パブリッシャーアカウントでログインに接続されているソーシャルネットワークの名前。指定可能な値:amazon
、apple
、babka
、baidu
、battlenet
、discord
、epicgames
、facebook
、github
、google
、kakao
、linkedin
、mailru
、microsoft
、msn
、naver
、ok
、paypal
、qq
、reddit
、steam
、twitch
、twitter
、vimeo
、vk
、wechat
、weibo
、xbox
、yahoo
、yandex
、youtube
。
- ユーザーはソーシャルネットワークにログインします。
- エクソーラログインサーバーは、ソーシャルネットワークから受信したユーザーデータを処理し、ソーシャルログインURLにウェブフックを送信します。応答は、このインタラクションフローで説明されている形式である必要があります。レスポンスでは、ユーザー属性のリストや必要なJSONオブジェクトを指定できます。レスポンスで提供するJSONオブジェクトは、ユーザーのJWTの
partner_data
フィールドに記録されます。
ユーザーデータは、一時的なゲートウェイトークン(“request_type”: “gateway_token”)
を持つサーバートークン)としてAuthorization
ヘッダーに渡されます。
ゲートウェイトークンの主なフィールド:
クレーム | 種類 | 説明 |
---|---|---|
exp | Unix Timestamp | JWTの有効期限の日時。JWTの存続時間は7分です。 必須。 |
iat | Unix Timestamp | JWTが発行された日時。 必須。 |
iss | string | JWTに署名したサービスhttps://login.xsolla.com 。 必須。 |
request_type | string | 定数:gateway_request 。 必須。 |
xsolla_login_project_id | string(UUID) | アドミンページの御社のログインプロジェクトID。 必須。 |
string | ユーザーのメールアドレス。 | |
sub | string(UUID) | エクソーラログインサーバー側に書き込まれたユーザーID。 必須。 |
username | string | ユーザー名。 |
provider | string | 認証に使用されるソーシャルネットワークの名前。 必須。 |
id | string | ソーシャルネットワークのユーザーID。 必須。 |
social_access_token | string | ユーザーが認証されたソーシャルネットワークのアクセストークン。このクレームの送信を有効にするには、カスタマーサクセスマネージャーに連絡するか、csm@xsolla.comに電子メールを送信してください。 |
partner_data | string | 認証中にサーバーから応答本文で返される任意の種類のデータ。このクレームの送信を有効にするには、カスタマーサクセスマネージャーに連絡するか、csm@xsolla.comに電子メールを送信してください。 |
- json
1{
2 "exp": 1573635020,
3 "iat": 1573634600,
4 "iss": "https://login.xsolla.com",
5 "request_type": "gateway_request",
6 "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000",
7 "sub": "00000000-0000-0000-0000-000000000000",
8 "email": "example@test.com",
9 "username": "Smith707",
10 "provider": "google",
11 "id": "123",
12}
ソーシャルログイン URLウェブフックの例:
http
- http
- curl
1POST https://your.hostname/your_social_authentication_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{}
1curl --request POST \
2 --url 'https://your.hostname/your_social_authentication_uri' \
3 --header 'authorization: bearer_JWT' \
4 --header 'content-type: application/json'
ユーザー属性を含むウェブフックへの応答の例:
- json
1{
2 "attributes": [
3 {
4 "attr_type": "server",
5 "key": "company",
6 "permission": "private",
7 "value": "facebook-promo"
8 },
9 {
10 "attr_type": "server",
11 "key": "custom-id",
12 "permission": "private",
13 "value": 48582
14 }
15 ]
16}
JSONオブジェクトを使用したウェブフックへの応答の例:
- json
1{
2 "id": 123456,
3 "role": "scout"
4}
- ユーザー認証が失敗した場合、認証ウィジェットに表示するエラーメッセージを提供できます。これを行うには、ユーザー作成リクエストの応答で、以下の詳細情報を含む
error
オブジェクトを渡します:code
パラメータには、エラーコード(例えば、011-002
)を指定します。description
パラメータには、エラーメッセージのテキストを入力します。
ユーザーパスワードのリセット
- クライアントは、エクソーラログインサーバーに
Reset password POST
リクエストを送信します。リクエストには、Authorization: Bearer {JWT}
ヘッダーと、以下の必須パラメータを含める必要があります:projectId
クエリパラメータ — パブリッシャーアカウントのログインプロジェクトのID。username
本文パラメータ — ユーザー名。許可される長さ:3~255文字。
- エクソーラログインサーバーは、ユーザーにパスワードリセット確認メールを送信します。
- メール内のパスワードリセット確認後、ユーザーは新しいパスワードを入力できるページにリダイレクトされます。
- ユーザーは新しいパスワードを入力します。
- エクソーラログインサーバーは、パスワードリセットURLにウェブフックを送信します。
- パスワードリセットが失敗した場合、認証ウィジェットに表示するエラーメッセージを提供できます。これを行うには、ユーザー作成リクエストへのレスポンスで、以下の詳細情報を含む
error
オブジェクトを渡します。code
パラメータには、エラーコード(例:011-002
)を指定します。description
パラメータには、エラーメッセージのテキストを入力します。
パスワードリセットURLウェブフックの例:
http
- http
- curl
1POST https://your.hostname/your_reset_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{
6 "username": "john@gmail.com",
7 "fields": {
8 "password": "NewPa$$word1"
9 }
10}
1curl --request POST \
2 --url 'https://your.hostname/your_reset_uri' \
3 --header 'authorization: bearer_JWT' \
4 --header 'content-type: application/json' \
5 --data '{"email":"john@gmail.com","fields":{"password":"NewPa$$word1"}}'
続きを読む
お役立ちリンク
カスタムストレージを接続する方法誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。