認証

高度な設定については、ハウツーをご覧ください。

OAuth 2.0認証をセットアップする方法

OAuth 2.0 では、長持ちするトークンの代わりに、短命のトークンを使用しています(リフレッシュトークン)。リフレッシュトークンを使用することで、ユーザーはユーザー名とパスワードを再入力することなく、長期間アプリケーションに滞在することができます。これにより、ユーザー認証データが危険にさらされるリスクがなくなります。

認証用にOAuth 2.0を設定するには:

  • ユーザー名またはメールとパスワード経由
  • ソーシャルネットワーク経由
  • Steam経由

このオプションが有効な場合、ユーザー登録と認証は、Register new userおよびJWT auth by username and password APIコールを呼び出すことによって実行されます。Login & Account Systemアセットは、OAuth 2.0認証のためにJWTトークン認証と同じメソッドを提供します。エンジンが最初にシーン上のオブジェクトを初期化すると、Awakeメソッドが呼び出されます。このメソッドは、現在のリフレッシュトークンの有効期限をチェックします。

お知らせ
この設定を有効にしても、アプリケーションでのユーザーの認証プロセスは変わりません。

OAuth 2.0 認証を設定するには:

  1. パブリッシャーアカウントでログインプロジェクトのOAuth 2.0認証をセットアップします。
  2. Unityプロジェクトでアセットをセットアップします。

アドミンページでログインプロジェクトのOAuth 2.0認証を設定する

  1. パブリッシャーアカウントに移動します。
  2. サイドメニューでログインをクリックします。
  3. ログインプロジェクトペインで構成するをクリックします。
  4. セキュリティブロックに移動してOAuth 2.0セクションを選択します。
  5. OAuth 2.0を追加するをクリックします。
  6. OAuth 2.0リダイレクトURIを指定して接続するをクリックします。
  7. クライアントIDをコピーして保存します。

Unityプロジェクトでアセットをセットアップする

  1. Unityプロジェクトに移動します。
  2. メインメニューでWindow > Xsolla > Edit Settingsをクリックします。
  3. Inspectorパネルで:
    1. Authorization methodフィールドで、OAuth2.0を選択します。
    2. OAuth2.0 client IDフィールドで、パブリッシャーアカウントでOAuth 2.0を設定するときに受信したクライアントIDを指定します。

以下のメソッドは、Login & Account Systemアセットで実装され、更新トークンを操作します:

  • IsOAuthTokenRefreshInProgress — 更新トークンの処理中trueを返し、それ以外の場合はfalseを返します。
  • ExchangeCodeToToken — ユーザーの認証コードを有効なJWTと交換します。

GetSocialNetworkAuthUrlメソッドにあるoauthState引数は、OAuth 2.0 認証時の追加のユーザ検証に使用されます。この引数は、CSRF 攻撃の可能性を軽減するために使用されます。

この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
非表示

独自の認証システムの使い方

注意

以下のアセットのみを使用する場合は、このハウツーを参考してください:

  • Game Commerce
  • Cross-Buy

Cross-Buyアセットが2022年4月に非推奨となることが決定しました。引き続き使用することは可能ですが、新機能のアップデートや補完は行われません。Game Commerceアセットへの切り替えを推奨します。エクソラ製品との連携に必要なクラスとメソッドがすべて含まれています。

Game CommerceおよびCross-Buyアセットは、独自のログインシステムと統合することができます。これを行うには、アプリケーションに決済ステーションアクセストークンによるユーザー認証を実装します。

独自の認証システムを使用する場合のエクソラサーバーとのやり取りの流れは:

  1. あなたのクライアントは、サーバーに認証リクエストを送信します。
  2. サーバーはユーザーを認証し、エクソラサーバーにリクエストを送信して決済ステーションアクセストークンを受け取ります。
  3. エクソラサーバーが決済ステーションアクセストークンを返す。
  4. サーバーは、決済ステーションアクセストークンをクライアントに渡します。
  5. SDKメソッドは、受け取った決済ステーションアクセストークンを認証トークンとして使用し、ゲーム内ストアを開き、支払い、インベントリの管理を行います。

ペイステーションアクセストークンを取得する

お知らせ
PlayFabまたはFirebaseの認証システムを使用している場合は、BaaSInsert用のエクソラ既製エクステンションを使用して決済ステーションアクセストークンを取得します。

アプリケーションのバックエンドで、HTTP POSTリクエストを使用して決済ステーションアクセストークンを取得するメソッドを実装します。

Xsolla APIは基本的なHTTP認証を使用します。リクエストにはAuthorization: Basic <your_authorization_basic_key>ヘッダーが必要で、<your_authorization_basic_key>はBase64規格に従ってエンコードされたmerchant_id:api_keyです。パラメータ値はパブリッシャーアカウントにあります:

  • merchant_idの場合、プロジェクト設定> ウェブフック>マーチャントIDセクションに移動します。
  • api_keyの場合、会社設定> APIキーセクションに移動します。

HTTPリクエスト:

Copy
Full screen
Small screen

http

  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
POST https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token

Headers:
  Authorization: Basic <your_authorization_basic_key>
Content-Type: application/json

Body:
  {
  "purchase": {
    "virtual_currency": {
      "quantity": 100
    },
    "virtual_items": {
      "items": [
        {
          "amount": 1,
          "sku": "SKU01"
        }
      ]
    }
  },
  "settings": {
    "currency": "USD",
    "language": "en",
    "project_id": 16184,
    "ui": {
      "components": {
        "virtual_currency": {
          "custom_amount": true
        }
      },
      "desktop": {
        "virtual_item_list": {
          "button_with_price": true,
          "layout": "list"
        }
      },
      "size": "medium"
    }
  },
  "user": {
    "country": {
      "allow_modify": true,
      "value": "US"
    },
    "age": 19,
    "email": {
      "value": "john.smith@mail.com"
    },
    "id": {
      "value": "user_2"
    },
    "name": {
      "value": "John Smith"
    }
  }
}
curl --request POST \
  --url https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token \
  --header 'authorization: Basic <your_authorization_basic_key>' \
  --header 'content-type: application/json' \
  --data '{"user":{"id":{"value":"user_2"},"name":{"value":"John Smith"},"age":19,"email":{"value":"john.smith@mail.com"},"country":{"value":"US","allow_modify":true}},"settings":{"project_id":16184,"currency":"USD","language":"en","ui":{"size":"medium","desktop":{"virtual_item_list":{"layout":"list","button_with_price":true}},"components":{"virtual_currency":{"custom_amount":true}}}},"purchase":{"virtual_currency":{"quantity":100},"virtual_items":{"items":[{"sku":"SKU01","amount":1}]}}}'
<?php

$client = new http\Client;
$request = new http\Client\Request;

$body = new http\Message\Body;
$body->append('{"user":{"id":{"value":"user_2"},"name":{"value":"John Smith"},"age":19,"email":{"value":"john.smith@mail.com"},"country":{"value":"US","allow_modify":true}},"settings":{"project_id":16184,"currency":"USD","language":"en","ui":{"size":"medium","desktop":{"virtual_item_list":{"layout":"list","button_with_price":true}},"components":{"virtual_currency":{"custom_amount":true}}}},"purchase":{"virtual_currency":{"quantity":100},"virtual_items":{"items":[{"sku":"SKU01","amount":1}]}}}');

$request->setRequestUrl('https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token');
$request->setRequestMethod('POST');
$request->setBody($body);

$request->setHeaders(array(
  'authorization' => 'Basic <your_authorization_basic_key>',
  'content-type' => 'application/json'
));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
var client = new RestClient("https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token");
var request = new RestRequest(Method.POST);
request.AddHeader("authorization", "Basic <your_authorization_basic_key>");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"user\":{\"id\":{\"value\":\"user_2\"},\"name\":{\"value\":\"John Smith\"},\"age\":19,\"email\":{\"value\":\"john.smith@mail.com\"},\"country\":{\"value\":\"US\",\"allow_modify\":true}},\"settings\":{\"project_id\":16184,\"currency\":\"USD\",\"language\":\"en\",\"ui\":{\"size\":\"medium\",\"desktop\":{\"virtual_item_list\":{\"layout\":\"list\",\"button_with_price\":true}},\"components\":{\"virtual_currency\":{\"custom_amount\":true}}}},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"virtual_items\":{\"items\":[{\"sku\":\"SKU01\",\"amount\":1}]}}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import http.client

conn = http.client.HTTPSConnection("api.xsolla.com")

payload = "{\"user\":{\"id\":{\"value\":\"user_2\"},\"name\":{\"value\":\"John Smith\"},\"age\":19,\"email\":{\"value\":\"john.smith@mail.com\"},\"country\":{\"value\":\"US\",\"allow_modify\":true}},\"settings\":{\"project_id\":16184,\"currency\":\"USD\",\"language\":\"en\",\"ui\":{\"size\":\"medium\",\"desktop\":{\"virtual_item_list\":{\"layout\":\"list\",\"button_with_price\":true}},\"components\":{\"virtual_currency\":{\"custom_amount\":true}}}},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"virtual_items\":{\"items\":[{\"sku\":\"SKU01\",\"amount\":1}]}}}"

headers = {
    'content-type': "application/json",
    'authorization': "Basic <your_authorization_basic_key>"
    }

conn.request("POST", "/merchant/v2/merchants/{merchant_id}/token", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
require 'uri'
require 'net/http'

url = URI("https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'Basic <your_authorization_basic_key>'
request.body = "{\"user\":{\"id\":{\"value\":\"user_2\"},\"name\":{\"value\":\"John Smith\"},\"age\":19,\"email\":{\"value\":\"john.smith@mail.com\"},\"country\":{\"value\":\"US\",\"allow_modify\":true}},\"settings\":{\"project_id\":16184,\"currency\":\"USD\",\"language\":\"en\",\"ui\":{\"size\":\"medium\",\"desktop\":{\"virtual_item_list\":{\"layout\":\"list\",\"button_with_price\":true}},\"components\":{\"virtual_currency\":{\"custom_amount\":true}}}},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"virtual_items\":{\"items\":[{\"sku\":\"SKU01\",\"amount\":1}]}}}"

response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"user\":{\"id\":{\"value\":\"user_2\"},\"name\":{\"value\":\"John Smith\"},\"age\":19,\"email\":{\"value\":\"john.smith@mail.com\"},\"country\":{\"value\":\"US\",\"allow_modify\":true}},\"settings\":{\"project_id\":16184,\"currency\":\"USD\",\"language\":\"en\",\"ui\":{\"size\":\"medium\",\"desktop\":{\"virtual_item_list\":{\"layout\":\"list\",\"button_with_price\":true}},\"components\":{\"virtual_currency\":{\"custom_amount\":true}}}},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"virtual_items\":{\"items\":[{\"sku\":\"SKU01\",\"amount\":1}]}}}");
Request request = new Request.Builder()
  .url("https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token")
  .post(body)
  .addHeader("content-type", "application/json")
  .addHeader("authorization", "Basic <your_authorization_basic_key>")
  .build();

Response response = client.newCall(request).execute();
var data = JSON.stringify({
  "user": {
    "id": {
      "value": "user_2"
    },
    "name": {
      "value": "John Smith"
    },
    "age": 19, 
    "email": {
      "value": "john.smith@mail.com"
    },
    "country": {
      "value": "US",
      "allow_modify": true
    }
  },
  "settings": {
    "project_id": 16184,
    "currency": "USD",
    "language": "en",
    "ui": {
      "size": "medium",
      "desktop": {
        "virtual_item_list": {
          "layout": "list",
          "button_with_price": true
        }
      },
      "components": {
        "virtual_currency": {
          "custom_amount": true
        }
      }
    }
  },
  "purchase": {
    "virtual_currency": {
      "quantity": 100
    },
    "virtual_items": {
      "items": [
        {
          "sku": "SKU01",
          "amount": 1
        }
      ]
    }
  }
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key>");

xhr.send(data);

トークンを取得するには、リクエストボディに以下のパラメータを渡します:

パラメータ種類説明文
settings
objectカスタムプロジェクト設定(オブジェクト)。
settings.project_id
integerゲームのエクソラID。パブリッシャーアカウントのプロジェクト名の横にあります。 必須。
user
objectユーザーの詳細(オブジェクト)。
user.id
object認証システムのユーザーID(オブジェクト)。
user.id.value
stringユーザーID。 必須。
user.email
objectユーザーのEメール(オブジェクト)。
user.email.value
stringユーザーのメールアドレス。RFC 822 で規定された書式を厳密に守らなければなりません。 必須。
user.name
objectユーザーのニックネームに関するデータを含むオブジェクト。必須。
user.name.value
stringユーザーの画面名。
user.steam_id
objectユーザーSteam ID(オブジェクト)。
user.steam_id.value
stringユーザーSteam ID。必須アプリケーションがSteamで公開されている場合。
user.playfab_id
objectユーザーPlayFab ID(オブジェクト)。
user.playfab_id.value
stringユーザーPlayFab ID。必須アプリケーションがPlayFabサービスを使用してアイテムを付与する場合。

APIリファレンスのリクエストとレスポンスの例を参照してください。

お知らせ
リクエストでは、上記リストのパラメータのみを使用してください。APIコールの他のパラメータ(custom_parameterspurchaseなど)は、認証トークンを受け取るためのものではありませんので、渡さないでください。

ユーザーJWTを使用する

決済ステーションアクセストークンを使用して、ゲーム内ストアを開設して、支払い、インベントリ管理を行うには、SDKメソッドのXsollaLogin.Instance.TokenおよびXsollaStore.Instance.Tokenプロパティにアクセストークンを渡します。

チュートリアルでは、認証トークンの使用例を紹介しています:

期限切れ後に新しい決済ステーションアクセストークンを受け取るためのロジックを実装します。ユーザーがアプリケーションに再度ログインする必要がないように、バックグランドモードで新しいトークンを取得することをお勧めします。

お知らせ
ゲーム内ストアとインベントリを操作するときの決済ステーションアクセストークンの有効期間は、エクソラAPIを最後に呼び出してから1時間となります。決済ステーションアクセストークンの有効期限を変更するには、アカウントマネージャーに連絡してください。
この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
非表示

ソーシャルネットワーク経由でネイティブ認証を設定する方法

ネイティブ認証は、ユーザーがモバイルデバイスに設定されたソーシャルネットワークアカウントを介してアプリケーションにログインすることを可能にします。

ユーザーが初めてログインすると、ソーシャルネットワーキングアプリケーションが起動し、ユーザー認証の許可を求めます。その後は、ユーザーが何もしなくても自動的に認証が行われます。

現在、SDKは以下のソーシャルネットワーク経由のネイティブ認証を実装しています:

  • Google
  • Facebook
  • WeChat
  • QQ

ネイティブ認証を設定するには:

  1. Android用のUnityプロジェクトビルドを作成します。
  2. ソーシャルネットワークの開発者アカウントでアプリケーションの設定を行います:
    1. Facebookによる認証の場合:
      1. 登録して、新しいアプリケーションを作成します。
      2. Facebook開発者アカウントで、アプリケーションページを設定します。
    2. Googleによる認証の場合:Google API Consoleでプロジェクトを設定します。
    3. WeChatによる認証の場合:
      1. 登録して、新しいアプリケーションを作成します。
      2. 審査のためにアプリケーションを提出してください。
    4. QQによる認証の場合:
      1. 登録して、新しいアプリケーションを作成します。
      2. 審査のためにアプリケーションを提出してください。

  1. エクソラ側でソーシャルネットワークによる認証を設定します:
    1. FacebookとGoogleの場合は、パブリッシャーアカウントでソーシャルコネクションを設定します。
    2. WeChatとQQの場合は、あなたのアカウントマネージャーをお問い合わせてください。
  2. Unityプロジェクトのアセットを設定します。

Android用Unityプロジェクトビルドを作成する

  1. Unityプロジェクトに移動します。
  2. メインメニューのFile > Build settingsをクリックします。
  3. PlatformパネルのAndroidをクリックします。
  4. Buildをクリックします。
  5. ハッシュキーが形成されていることを確認します:
    1. メインメニューのWindow > Xsolla > Edit Settingsをクリックします。
    2. ハッシュキーがAndroid debug hash keyフィールドに表示されていることを確認します。

さらにネイティブ認証を構成するには、次のものが必要です:

  • File > Build settingsAndroidプラットフォームを選択すると、InspectorパネルにPackage Nameが表示されます。
  • Window > Xsolla > Edit Settings > Inspector > Android class nameAndroid class nameが表示されます。
  • Window > Xsolla > Edit Settings > Inspector > Android debug hash keyAndroid debug hash keyが表示されます。

Facebook開発者アカウントでアプリケーションページをセットアップする

  1. Facebook開発者アカウントのプロジェクト設定に移動します。
  2. 設定>基本に移動します。
  3. プラットフォームを追加するをクリックし、Androidを選択します。
  4. Google Playパッケージ名フィールドでのUnityプロジェクトからPackage Nameを指定します。
  5. クラス名フィールドでのUnityプロジェクトからAndroid class nameを指定します。
  6. ハッシュキーフィールドでのUnityプロジェクトからAndroid debug hash keyを指定します。
  7. 変更を保存するをクリックします。

さらにネイティブ認証の設定を行うには、設定 > 基本セクションのプロジェクト設定にあるアプリIDアプリシークレットが必要です。

Google API Consoleでプロジェクトをセットアップする

  1. Google API Consoleに移動します。
  2. 新しいプロジェクトをクリックします。
  3. プロジェクト名場所を指定して保存するをクリックします。
  4. 作成したプロジェクトに移動してサイドメニューでのOAuth同意画面をクリックします。
  5. 外部オプションを選択して作成するをクリックします。
  6. 必要なパラメータを指定して、保存をクリックします。サイドメニューで
  7. 資格情報をクリックします。
  8. Unityアプリ用のOAuth 2.0クライアントを作成します:
    1. 資格情報を作成するをクリックして、OAuthクライアントIDを選択します。
    2. アプリケーションタイプフィールドでAndroidを指定します。
    3. 名称を指定します。
    4. パッケージ名フィールドであなたのUnityプロジェクトからPackage Nameを指定します。
    5. SHA-1証明書のフィンガープリントフィールドであなたのUnityプロジェクトからAndroid debug hash keyを指定します。
    6. 作成するをクリックします。
    7. OKをクリックします。
  1. Webアプリケーション用のOAuth 2.0クライアントを作成します:
    1. 資格情報を作成するをクリックして、OAuthクライアントIDを選択します。
    2. アプリケーションタイプフィールドでウェブアプリケーションを指定します。
    3. 名称を指定します。
    4. 許可されたリダイレクトURIセクションでURIを追加するをクリックして、 https://login.xsolla.com/api/social/oauth2/callback URIを指定します。
    5. 作成するクリックします。
    6. OKクリックします。

さらにネイティブ認証の設定を行うには、ウェブアプリケーションのクライアントIDの設定にあるクライアントIDクライアントシークレットが必要です。

エクソーラアドミンページでログインプロジェクトのソーシャルコネクションを設定します

  1. パブリッシャーアカウントでプロジェクトを開きます。
  2. サイドメニューのログインをクリックし、ログインプロジェクト > ログインプロジェクト > ソーシャル接続に移動します。
  3. Facebook経由で認証を設定するには:
    1. Facebookパネルで編集するをクリックしてステータスを切断済みを変更します。
    2. アプリケーションIDフィールドでのFacebook開発者アカウントからアプリIDを指定します。
    3. アプリケーションシークレットフィールドでのFacebook開発者アカウントからアプリシークレットを指定します。
    4. 接続するをクリックします。
  1. Google経由で認証を設定するには:
    1. Googleパネルで編集するをクリックしてステータスを切断済みを変更します。
    2. アプリケーションIDフィールドでのGoogle API ConsoleからクライアントIDを指定します。
    3. アプリケーションシークレットフィールドでのGoogle API Consoleからクライアントシークレットを指定します。
    4. 接続するをクリックします。

Unityプロジェクトのアセットをセットアップする

  1. Unityプロジェクトに移動します。
  2. メインメニューでWindow > Xsolla > Edit Settingsをクリックします。
  3. アプリケーションIDを指定します:
    1. Facebook App IDフィールドでのFacebook開発者アカウントからアプリIDを指定します。
    2. Google server IDフィールドでのGoogle API ConsoleからウェブアプリケーションのクライアントIDを指定します。
    3. WeChat App IDAppIDをWeChatアプリケーションの設定から指定します。
    4. QQ App IDAppIDをQQアプリケーションの設定から指定します。
    この記事は役に立ちましたか?
    ありがとうございます!
    改善できることはありますか? メッセージ
    申し訳ありません
    この記事が参考にならなかった理由を説明してください。 メッセージ
    ご意見ありがとうございました!
    あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
    非表示

Steam経由でネイティブ認証を設定する方法

ネイティブ認証により、プレーヤーはインストールされたSteamアプリケーションを介してアプリケーションに入ることができます。

ネイティブ認証を設定するには:

  1. パブリッシャーアカウントでStreamを介してサイレント認証をセットアップします。
  2. Unityプロジェクトを構成します。
  3. イベントの処理を構成します。
  4. Steamを介して認証を確認します。

Unityプロジェクトを構成する

  1. steam_appid.txtファイルを手動で作成し、SteamにアプリケーションIDを入力します。次に、このファイルをプロジェクトのAssetsカタログに配置します。
お知らせ
GitHubからアセットをダウンロードした場合、Assetsカタログでsteam_appid.txtファイルがあります。このファイルには、デモプロジェクトのSteamのアプリケーションIDが含まれています。
  1. Unityプロジェクトを開きます。
  2. メインメニューで、Window > Xsolla > Edit Settingsに移動します。
  3. Inspectorパネルで:
    1. Use Steam authorizationボックスをチェックします。
    2. Steam App IDフィールド、SteamでアプリケーションIDを指定します。この値は、steam_appid.txtファイルの値と同じである必要があります。

イベントの処理を構成する

Steam経由でユーザーを認証するには、SteamAuthメソッドを介してsession ticket>を取得する必要があります。RequestTokenByメソッドを呼び出す際に受信した値を渡します。その結果、APIを呼び出すときに使用されるトークンを取得します。

Steamによる認証を確認する

  1. スタンドアロンプラットフォーム用のUnityプロジェクトのビルドを作成します。
  2. Steamを起動してログインします。
  3. アプリケーションを起動します。すべてが正しければ、Steamポップアップウィンドウが表示されます。
この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
非表示

トークン無効化の設定方法

トークンの無効化により、アプリケーション内のユーザー認証データのセキュリティを向上させることができます。このオプションを有効にすると、ユーザーが認証を行うたびに無効になる古いトークンが新しいトークンに置き換わります。

お知らせ
JWTトークンを使用する認証では、トークン無効化を設定することができます。OAuth 2.0認証の場合、トークン無効化はプロトコル自体が提供するものであり、別途設定する必要はありません。

SDKを利用する場合、with_logoutパラメータの値が1の場合、Auth by username and passwordAuth via social networkのAPIコールを呼び出すことで、既存のトークンの無効化と新しいトークンの生成を行います。

Unityプロジェクトでトークン無効化を有効にするには:

  1. メインメニューで、Window > Xsolla > Edit Settingsに移動します。
  2. Inspectorパネルで、Enable JWT invalidationチェックボックスをオンにします。

この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
非表示

ランチャー経由でアプリケーションに認証を設定する方法

エクソラランチャーを使用して、アプリケーションをユーザーに配信したり、更新したりすることができます。ランチャーには認証ツールが組み込まれています。ユーザー名とパスワードを再入力する必要がないように、ランチャーを介してアプリケーションの認証を設定します。

注意
ランチャーを使用するには、ログインの設定が必要です。別の認証システムを使用することはサポートされていません。

SDKとランチャーを連携するためにセットアップする

  1. パブリッシャーアカウントでランチャーをセットアップします。
お知らせ
config.jsonファイルで、以下のオブジェクトの値を変更するだけで十分です:
  • launcher_project_idパブリッシャーアカウント > ランチャー > 一般設定 > 一般情報にあるランチャーIDを指定します。
  • login_project_idパブリッシャーアカウント > ランチャー > 一般設定 > 認証にあるログインIDを指定します
  1. ランチャーのUIをカスタマイズします
注意
エクソラサーバーとのSDKの統合は、Commerce APIコールを使用しているため、ランチャーストアはサポートされていません。
  1. あなたのアプリケーションのランチャー認証ロジックを実装します。
  2. ランチャーインストールファイルとビルドアーカイブを生成します
  3. アプリケーションのビルドを作成します
  4. アプリケーションのビルドをエクソラアップデートサーバーにアップロードします

ランチャーによる認証ロジックを実装する

ランチャーによるアプリケーションでの認証の流れは以下の通り:

  1. ユーザーはランチャーで認証されています。
  2. ユーザーはアプリケーションをインストールして実行します。
  3. ランチャーは、アプリケーションを実行し、コマンドラインでユーザーのパラメータを渡します。認証トークンは、xsolla-login-tokenパラメータで渡されます。
  4. アプリケーションは、コマンドラインパラメーターを処理し、トークンを取得します。トークン処理スクリプトの例は、デモプロジェクトで見ることができます。
  5. アプリケーションは受信したトークンを検証します。トークン検証スクリプトの例は、デモプロジェクトで見ることができます。
  6. アプリケーションは、認証ページを表示することなく、自動的にユーザーを認証します。ユーザー認証スクリプトの例は、デモプロジェクトで見ることができます。

お知らせ
取得したトークンは、SDKメソッドでゲーム内ストアの開設や決済などに使用されます。トークンをXsollaLogin.Instance.TokenXsollaStore.Instance.Tokenの属性に渡します。

アプリケーションのビルドを作成する

  1. Unityプロジェクトに移動します。
  2. メインメニューでWindow > Xsolla > Edit Settingsをクリックします。IInspectorパネルで:
    1. Project IDフィールドで、パブリッシャーアカウント > プロジェクト設定 > プロジェクトIDにあるプロジェクトIDを指定します。
    2. Login IDフィールドで、パブリッシャーアカウント > ランチャー > 一般設定 > 認証にあるログインIDを指定します。
  1. トークンが処理されるユーザー認証シーンを実行します。
  2. メインメニューでFile > Build settingsをクリックし、そしてAdd Open Scenesをクリックします。認可シーンがリストの最初に追加されていることを確認してください。
  3. Buildをクリックします。
  4. ポップアップウィンドウで、完成したビルドが置かれるディレクトリへのパスを指定します。
この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
非表示

デバイスIDによるユーザー認証を実現する方法

デバイスID認証は、ユーザーが登録データを入力することなく、モバイルデバイスでアプリケーションを使い始めることを可能にします。ユーザーが初めてデバイスIDを使ってアプリケーションにログインすると、新しいアカウントが自動的に作成され、ユーザー名やメールアドレスなどを入力する必要がありません。

注意
デバイスIDで作成されたアカウントは、現在使用しているモバイルデバイスでのみアプリケーションを使用することができ、AndroidやiOSのデバイスを変更したり、iOSデバイスでアプリケーションをアンインストールしたりすると、アクセスできなくなります。アプリケーションの進捗状況を保存し、他のデバイスで使用するには、ソーシャルネットワークのリンク、またはユーザー名、メールアドレス、パスワードを入力してアカウントをアップグレードします。

デバイスIDを使用すると、バックグラウンドモードで1台または複数のモバイルデバイスにユーザー認証を実装することができます。この機能を利用するには、ユーザーはデバイスIDを既存のアカウントにリンクさせる必要があります。

本SDKは、AndroidおよびiOSのモバイルデバイスのIDによる認証に対応しています。

デバイスIDを取得する

デバイスIDは、プラットフォームによって生成され、モバイルデバイスにインストールされたアプリケーションが利用できます。SDKはプラットフォームのAPIを使ってIDの値を取得し、この値を使ってエクソラAPIを使って様々な機能を実行します。

iOSデバイスのIDは、UIDevice.identifierForVendorプロパティで渡されます。IDの決定には、Unityの標準メソッドであるSystemInfo.deviceUniqueIdentifierが使用されます。

AndroidデバイスIDは、android.provider.Settings.Secure.ANDROID_ID定数で渡されます。Unityの標準的なメソッドでは、AndroidデバイスのIDがMD5ハッシュとして返されますが、これはXsolla APIの呼び出しには不適切であるため、SDKでは独自のロジックでIDを決定しています。

SDKメソッド

本SDKは以下の機能のメソッドを実装しています:

認証

SDKメソッドの名称説明
AuthViaDeviceID
現在のデバイスIDを使って、ユーザーをアプリケーションに認証します。

アカウントアップグレード

SDKメソッドの名称説明
AddUsernameEmailAuthToAccount
現在のアカウントに、認証に使用できるユーザー名、メールアドレス、パスワードを追加します。
LinkSocialProvider
認証に使用できるソーシャルネットワークを現在のアカウントにリンクします。
注意
リストされたメソッドは、任意の利用可能な方法で作成されたアカウントをアップグレードするために使用することができます(例:ソーシャルネットワークを使用したり、電子メールアドレスとパスワードを使用したり)。

デバイス管理

SDKメソッドの名称説明
GetUserDevices
現在のユーザーアカウントにリンクされているデバイスのリストを返します。
LinkDeviceToAccount
指定されたデバイスを現在のユーザーアカウントにリンクします。
UnlinkDeviceFromAccount
指定されたデバイスを現在のユーザーアカウントからリンク解除します。
この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
非表示
最終更新日: 2024年1月22日

誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。

問題を報告する
当社は常にコンテンツを見直しています。お客様のご意見は改善に役立ちます。
フォローアップ用のメールをご提供してください
ご意見ありがとうございました!