カスタムユーザーデータストレージ
カスタムユーザーデータストレージを使用する場合、エクソーラログインは仲介者として機能し、すべてのユーザー識別データはユーザー側で保管されます。エクソーラログインは、ウェブフックのヘッダーおよび本文に含まれるトークンで認証データを渡します。
POSTリクエストはhttp://localhost:3000/my-webhook-endpointのようなURLには届きません。Ngrokを使うと、外部からのアクセス用のトンネルを作ることができ、エクソーラからのリクエストをローカルで受け取ることができます。これについては、ngrokに関するドキュメントで詳しく読むことができます。統合フロー
クライアントとして、ログインウィジェットまたはLogin APIコールを使用するアプリケーションを使用できます。クライアントとエクソーラログインサーバー間のインタラクションフローは以下のとおりです:
- クライアントはエクソーラログインに送信します。リクエストのフォーマットについては認証方法で説明されています。
- エクソーラログインサーバーはあなたのサーバーにウェブフックを送信します。ヘッダーには
“request_type”: “gateway_token”パラメータを持つサーバーJWTが含まれます。トークン検証をセットアップすrには、説明に従ってください。ユーザー識別データの一部は、ウェブフックの本文で渡されます。 - ウェブフックの受信を確認するには、サーバーは以下を返す必要があります:
- 応答が成功した場合は
200、201、または204HTTPコード。 - 指定されたユーザーが見つからなかった場合、または無効な署名が渡された場合は、問題の説明を含む
400HTTPコード。サーバー上で、一時的な問題が発生した場合、ウェブフックハンドラーは5xxHTTPコードを返すこともあります。
- 応答が成功した場合は
- エクソーラログインサーバーはサーバーから応答を処理し、認証トークンをクライアントに返します。
- クライアントは応答を処理します。
ユーザー識別後にユーザー情報をJWTに追加したい場合は、レスポンスボディに任意のパラメータセットを含むJSONオブジェクトを返してください。このオブジェクトは、JWTのpartner_dataフィールドに保存されます。
クライアントとして、ログインウィジェットまたはLogin APIコールを使用するアプリケーションを使用できます。クライアントとエクソーラログインサーバー間のインタラクションフローは以下のとおりです:
- クライアントはエクソーラログインに送信します。リクエストのフォーマットについては認証方法で説明されています。
- エクソーラログインサーバーはあなたのサーバーにウェブフックを送信します。ヘッダーには
“request_type”: “gateway_token”パラメータを持つサーバーJWTが含まれます。トークン検証をセットアップすrには、説明に従ってください。ユーザー識別データの一部は、ウェブフックの本文で渡されます。 - ウェブフックの受信を確認するには、サーバーは以下を返す必要があります:
- 応答が成功した場合は
200、201、または204HTTPコード。 - 指定されたユーザーが見つからなかった場合、または無効な署名が渡された場合は、問題の説明を含む
400HTTPコード。サーバー上で、一時的な問題が発生した場合、ウェブフックハンドラーは5xxHTTPコードを返すこともあります。
- 応答が成功した場合は
- エクソーラログインサーバーは、あなたのサーバーからの応答を処理し、クライアントに認証トークンを返します。
- クライアントは、エクソーラログインサーバーにJWTを生成する
POSTリクエストを送信します。リクエスト本文には、以下の必須パラメータを含める必要があります:grant_type— JWTグラントタイプで、authorization_codeの値を渡します。client_id— OAuth 2.0クライアントID。client_secret— OAuth 2.0クライアントシークレットID。機密認証タイプに必要です。code— 認証コード。
- エクソーラログインサーバーは、アクセストークンとリフレッシュトークンのペアをクライアントに返します。
- クライアントは応答を処理します。
- アクセストークンの有効期限が切れると、クライアントはエクソーラログインサーバーにJWTを生成する
POSTリクエストを送信します。リクエスト本文には、以下の必須パラメータを含める必要があります:grant_type— JWTグラントタイプで、refresh_tokenの値を渡します。client_id— OAuth 2.0クライアントID。refresh_token— ユーザー認証リクエストへの応答で受け取ったリフレッシュトークン。
JWTでユーザーを識別したり、トークンをリフレッシュする際に、ユーザー情報をJWTに追加できます。応答本文で任意のパラメータを含むJSONオブジェクトを返すことで、このオブジェクトはJWTのpartner_dataフィールドに保存されます。
- ニックネーム
- 生年月日
- 名
- 姓
- あなたのサーバー上のユーザーID
ユーザー属性オブジェクトの配列を渡すことによって、ユーザー属性を更新することもできます。これらのオブジェクトの構造については、以下で説明します。
ユーザー属性オブジェクトの構造:
| パラメータ | 種類 | 説明文 |
|---|---|---|
attr_type | string | 6341サービス属性に対するユーザーのアクセス レベルの定義:
|
key | string | ユーザーの属性を識別するための属性名。ユーザーごとにユニークである必要があります。 最大長さ:256シンボル。数字、ラテン文字、ハイフン、アンダースコアを使用することができます。 |
permission | string or null | ユーザーの属性へのアクセスのタイプは、メソッドによって返される属性のリストに影響します: 可能な値: public、private(デフォルト)。 |
read_only | string | 属性が変更から保護されているかどうか。デフォルトでは、falseと属性値の変更は許可されています。 |
value | string | ユーザーの属性の値。 最大長さ:256シンボル。 |
ユーザー登録
- クライアントは、
Register new user POSTリクエストをエクソーラログインサーバーに送信します。リクエストには、以下の必須パラメータを含める必要があります: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 "user": {
3 "player_id": "12345678",
4 "email": "user@example.com"
5 },
6 "user_info": {
7 "username": "gamer123",
8 "user_first_name": "John",
9 "user_last_name": "Doe",
10 "gender": "male",
11 "birthday": "1990-05-15",
12 "country": "US",
13 "language": "en"
14 },
15 "subscription_status": "active",
16 "loyalty_level": "gold"
17
18}
emailにフラグが付けられ、未確認の時、ユーザーデータはエクソーラデータベースに書き込まれます。ユーザーはアカウント確認メールを受け取ります。- ログインウィジェットを統合している場合、ユーザーは次のメッセージとともにページにリダイレクトされます:{email}に送信した指示に従って、アカウントを確認してください。
- ユーザー登録に失敗した場合、認証ウィジェットに表示されるエラーメッセージを提供することができます。これを行うには、ユーザ作成リクエストの応答で、以下の詳細を持つ
errorオブジェクトを渡します:codeパラメータで、エラーコード(例:011-002)を指定します。descriptionパラメータには、エラーメッセージのテキストを提供します。
エラーメッセージを持つオブジェクトの例:
- json
1{
2 "error": {
3 "code": "011-002",
4 "description": "<string>"
5 }
6}
- クライアントは、
Register new user POSTリクエストをエクソーラログインサーバーに送信します。リクエストには以下の必須パラメータを含める必要があります:- クエリパラメータ:
response_type— JWTグラントタイプでは、codeの値を渡します。client_id— OAuth 2.0クライアントID。state— 追加のユーザー認証に使用される値です。CSRF攻撃を防ぐために必要です。応答で返されます。許容される長さは1〜8文字です。
- 本文パラメータ:
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 "user": {
3 "player_id": "12345678",
4 "email": "user@example.com"
5 },
6 "user_info": {
7 "username": "gamer123",
8 "user_first_name": "John",
9 "user_last_name": "Doe",
10 "gender": "male",
11 "birthday": "1990-05-15",
12 "country": "US",
13 "language": "en"
14 },
15 "subscription_status": "active",
16 "loyalty_level": "gold"
17
18}
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リクエストをエクソーラログインサーバーに送信します。リクエストには、以下の必須パラメータを含める必要があります: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 "user": {
3 "player_id": "12345678",
4 "email": "user@example.com"
5 },
6 "user_info": {
7 "username": "gamer123",
8 "user_first_name": "John",
9 "user_last_name": "Doe",
10 "gender": "male",
11 "birthday": "1990-05-15",
12 "country": "US",
13 "language": "en"
14 },
15 "subscription_status": "active",
16 "loyalty_level": "gold"
17
18}
- ユーザー認証が失敗した場合、認証ウィジェットに表示するエラーメッセージを提供できます。これを行うには、ユーザー作成リクエストの応答で、以下の詳細情報を含む
errorオブジェクトを渡します:codeパラメータには、エラーコード(例えば、011-002)を指定します。descriptionパラメータには、エラーメッセージのテキストを入力します。
- エクソーラログインサーバーはユーザーJWTを生成します。
- ユーザーは、
tokenクエリパラメータを使用してlogin_urlにリダイレクトされます。このtokenパラメータには、ユーザーJWTが含まれています。
- クライアントは、
Auth by username and password POSTリクエストをエクソーラログインサーバーに送信します。リクエストには以下の必須パラメータを含める必要があります:- クエリパラメータ:
response_type— JWTグラントタイプでは、codeの値を渡します。client_id— OAuth 2.0クライアントID。state— 追加のユーザー認証に使用される値です。CSRF攻撃を防ぐために必要です。応答で返されます。許容される長さは1〜8文字です。
- 本文パラメータ:
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 "user": {
3 "player_id": "12345678",
4 "email": "user@example.com"
5 },
6 "user_info": {
7 "username": "gamer123",
8 "user_first_name": "John",
9 "user_last_name": "Doe",
10 "gender": "male",
11 "birthday": "1990-05-15",
12 "country": "US",
13 "language": "en"
14 },
15 "subscription_status": "active",
16 "loyalty_level": "gold"
17
18}
- ユーザー認証が失敗した場合、認証ウィジェットに表示するエラーメッセージを提供できます。これを行うには、ユーザー作成リクエストの応答で、以下の詳細情報を含む
errorオブジェクトを渡します:codeパラメータには、エラーコード(例えば、011-002)を指定します。descriptionパラメータには、エラーメッセージのテキストを入力します。
- エクソーラログインサーバーはユーザーJWTを生成します。
- ユーザーは、
tokenクエリパラメータを使用してlogin_urlにリダイレクトされます。このtokenパラメータには、ユーザーJWTが含まれています。
電話番号経由のパスワードレス認証
- クライアントは認証フォームを開き、ユーザーが電話番号を入力できるようにします。
- ユーザーは自分の電話番号を入力します。
- クライアントは、エクソーラログインサーバーに
Start auth by phone number POSTリクエストを送信します。リクエストには以下の必須パラメータを含める必要があります:projectIdクエリパラメータ — パブリッシャーアカウントのログインプロジェクトのID。phone_number本文パラメータ — ユーザーの電話番号。
- クライアントは、ユーザーが検証コードを入力するためのフィールドを表示します。
- ユーザーは受信した検証コードを入力します。
- クライアントは、エクソーラサーバーに
Complete auth by phone number POSTリクエストを送信します。リクエストには以下の必須パラメータを含める必要があります: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 "user": {
3 "player_id": "12345678",
4 "email": "user@example.com"
5 },
6 "user_info": {
7 "username": "gamer123",
8 "user_first_name": "John",
9 "user_last_name": "Doe",
10 "gender": "male",
11 "birthday": "1990-05-15",
12 "country": "US",
13 "language": "en"
14 },
15 "subscription_status": "active",
16 "loyalty_level": "gold"
17
18}
- クライアントは認証フォームを開き、ユーザーが電話番号を入力できるようにします。
- ユーザーは自分の電話番号を入力します。
- クライアントは、エクソーラログインサーバーに
Start auth by phone number POSTリクエストを送信します。リクエストには以下の必須パラメータを含める必要があります:- クエリパラメータ:
response_type— JWTグラントタイプでは、codeの値を渡します。client_id— OAuth 2.0クライアントID。state— 追加のユーザー認証に使用される値です。CSRF攻撃を防ぐために必要です。レスポンスで返されます。許容される長さは1〜8文字です。
phone_number本文パラメータ — ユーザーの電話番号。
- クエリパラメータ:
- クライアントは、ユーザーが検証コードを入力するためのフィールドを表示します。
- ユーザーは受信した検証コードを入力します。
- クライアントは、エクソーラサーバーに
Complete auth by phone number POSTリクエストを送信します。リクエストには以下の必須パラメータを含める必要があります:client_idクエリパラメータ — OAuth 2.0クライアント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 "user": {
3 "player_id": "12345678",
4 "email": "user@example.com"
5 },
6 "user_info": {
7 "username": "gamer123",
8 "user_first_name": "John",
9 "user_last_name": "Doe",
10 "gender": "male",
11 "birthday": "1990-05-15",
12 "country": "US",
13 "language": "en"
14 },
15 "subscription_status": "active",
16 "loyalty_level": "gold"
17
18}
メール経由でパスワードレス認証
- クライアントは認証フォームを開き、ユーザーがメールアドレスを入力できるようにします。
- ユーザーは自分のメールアドレスを入力します。
- クライアントは、エクソーラログインサーバーに
Start auth by email POSTリクエストを送信します。リクエストには以下の必須パラメータを含める必要があります:projectIdクエリパラメータ — パブリッシャーアカウントのログインプロジェクトのID。email本文パラメータ — ユーザーのメールアドレス。
- クライアントは、ユーザーが検証コードを入力するためのフィールドを表示します。
- ユーザーは受信した検証コードを入力します。
- クライアントは、エクソーラサーバーに
Complete auth by email POSTリクエストを送信します。リクエストには以下の必須パラメータを含める必要があります:projectIdクエリパラメータ — パブリッシャーアカウントのログインプロジェクトのID。- 本文パラメータ:
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 "user": {
3 "player_id": "12345678",
4 "email": "user@example.com"
5 },
6 "user_info": {
7 "username": "gamer123",
8 "user_first_name": "John",
9 "user_last_name": "Doe",
10 "gender": "male",
11 "birthday": "1990-05-15",
12 "country": "US",
13 "language": "en"
14 },
15 "subscription_status": "active",
16 "loyalty_level": "gold"
17
18}
- クライアントが認証フォームを開き、ユーザーがメールアドレスを入力できるようにします。
- ユーザーがメールアドレスを入力します。
- クライアントがエクソーラログインサーバーに
Start auth by email POSTリクエストを送信します。このリクエストには、以下の必須パラメータを含める必要があります:- クエリパラメータ:
response_type— JWTグラントタイプで、codeの値を渡します。client_id— OAuth 2.0クライアントID。state— 追加のユーザー認証に使用される値です。CSRF攻撃を防ぐために必要です。応答で返されます。許容される長さは1〜8文字です。
email本文パラメータ — ユーザーのメールアドレス。
- クエリパラメータ:
- クライアントがユーザーに検証コードを入力するためのフィールドを表示します。
- ユーザーが受け取った認証コードを入力します。
- クライアントは、エクソーラサーバーに
Complete auth by email POSTリクエストを送信します。リクエストには以下の必須パラメータを含める必要があります:client_idクエリパラメータ — OAuth 2.0クライアントID。- 本文パラメータ:
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 "user": {
3 "player_id": "12345678",
4 "email": "user@example.com"
5 },
6 "user_info": {
7 "username": "gamer123",
8 "user_first_name": "John",
9 "user_last_name": "Doe",
10 "gender": "male",
11 "birthday": "1990-05-15",
12 "country": "US",
13 "language": "en"
14 },
15 "subscription_status": "active",
16 "loyalty_level": "gold"
17
18}
ソーシャルネットワーク経由の認証
ソーシャルネットワーク経由の認証時にユーザーデータを取得するには、パブリッシャーアカウントのログインプロジェクトの設定(ユーザーデータベース > ストレージ > カスタムストレージセクション)で、ソーシャルログインURLを指定します。ソーシャルネットワークから受信したデータを含むリクエストがこのURLに送信されます。
認証フロー:
- クライアントは、エクソーラログインサーバーに
Auth via social network POSTリクエストを送信します。リクエストには以下の必須パラメータを含める必要があります:projectIdクエリパラメータ — パブリッシャーアカウントのログインプロジェクトのID。provider_nameパスパラメータ — パブリッシャーアカウントでログインに接続されているソーシャルネットワークの名前。指定可能な値:amazon、apple、xsolla、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 "user": {
3 "player_id": "12345678",
4 "email": "user@example.com"
5 },
6 "user_info": {
7 "username": "gamer123",
8 "user_first_name": "John",
9 "user_last_name": "Doe",
10 "gender": "male",
11 "birthday": "1990-05-15",
12 "country": "US",
13 "language": "en"
14 },
15 "subscription_status": "active",
16 "loyalty_level": "gold"
17
18}
- ユーザー認証が失敗した場合、認証ウィジェットに表示するエラーメッセージを提供できます。これを行うには、ユーザー作成リクエストの応答で、以下の詳細情報を含む
errorオブジェクトを渡します:codeパラメータには、エラーコード(例えば、011-002)を指定します。descriptionパラメータには、エラーメッセージのテキストを入力します。
ソーシャルネットワーク経由の認証時にユーザーデータを取得するには、パブリッシャーアカウントのログインプロジェクトの設定(ユーザーデータベース > ストレージ > カスタムストレージセクション)で、ソーシャルログインURLを指定します。ソーシャルネットワークから受信したデータを含むリクエストがこのURLに送信されます。
認証フロー:
- クライアントは、エクソーラログインサーバーに
Auth via social network POSTリクエストを送信します。リクエストには、以下の必須パラメータを含める必要があります:- クエリパラメータ:
response_type— JWTグラントタイプで、codeの値を渡します。client_id— OAuth 2.0クライアントID。state— 追加のユーザー認証に使用される値です。CSRF攻撃を防ぐために必要です。応答で返されます。許容される長さは1〜8文字です。
provider_nameパスパラメータ — パブリッシャーアカウントでログインに接続されているソーシャルネットワークの名前。指定可能な値:amazon、apple、xsolla、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 "user": {
3 "player_id": "12345678",
4 "email": "user@example.com"
5 },
6 "user_info": {
7 "username": "gamer123",
8 "user_first_name": "John",
9 "user_last_name": "Doe",
10 "gender": "male",
11 "birthday": "1990-05-15",
12 "country": "US",
13 "language": "en"
14 },
15 "subscription_status": "active",
16 "loyalty_level": "gold"
17
18}
- ユーザー認証が失敗した場合、認証ウィジェットに表示するエラーメッセージを提供できます。これを行うには、ユーザー作成リクエストの応答で、以下の詳細情報を含む
errorオブジェクトを渡します:codeパラメータには、エラーコード(例えば、011-002)を指定します。descriptionパラメータには、エラーメッセージのテキストを入力します。
ユーザーパスワードのリセット
- クライアントは、エクソーラログインサーバーに
Reset password POSTリクエストを送信します。リクエストには、以下の必須パラメータを含める必要があります: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"}}'
トークンのリフレッシュ
- アクセストークンの有効期限が切れると、クライアントはエクソーラログインサーバーのJWT生成する
POSTリクエストエンドポイントにリクエストを送信します。リクエスト本文には、以下のパラメータを含める必要があります:grant_type— JWTグラントタイプで、refresh_tokenの値を渡します。client_id— OAuth 2.0クライアントID。refresh_token— ユーザー認証リクエストへの応答で受け取ったリフレッシュトークン。
- エクソーラログインサーバーは、ソーシャルネットワークから受け取ったユーザーデータを処理し、リフレッシュトークンURLにウェブフックを送信します。この応答は、インタラクションフローで記述されている形式である必要があります。応答には、ユーザー属性のリストや、必要なJSONオブジェクトを指定できます。あなたが応答で提供するJSONオブジェクトは、ユーザーのJWTの
partner_dataフィールドに記録されます。
- http
1POST https://your.hostname/your_refrsh_token_uri HTTP/1.1
2Authorization: Bearer {JWT}
3Content-Type: application/json
4
5{}
ユーザー属性を含むウェブフックへの応答の例:
- 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 "user": {
3 "player_id": "12345678",
4 "email": "user@example.com"
5 },
6 "user_info": {
7 "username": "gamer123",
8 "user_first_name": "John",
9 "user_last_name": "Doe",
10 "gender": "male",
11 "birthday": "1990-05-15",
12 "country": "US",
13 "language": "en"
14 },
15 "subscription_status": "active",
16 "loyalty_level": "gold"
17
18}
続きを読む
最終更新日: 2025年10月31日誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。