認証
OAuth 2.0 では、長持ちするトークンの代わりに、短命のトークンを使用しています(リフレッシュトークン)。リフレッシュトークンを使用することで、ユーザーはユーザー名とパスワードを再入力することなく、長期間アプリケーションに滞在することができます。これにより、ユーザー認証データが危険にさらされるリスクがなくなります。
認証用にOAuth 2.0を設定するには:
- ユーザー名またはメールとパスワード経由
- ソーシャルネットワーク経由
- Steam経由
このオプションが有効な場合、ユーザー登録と認証は、Awake
メソッドが呼び出されます。このメソッドは、現在のリフレッシュトークンの有効期限をチェックします。
OAuth 2.0 認証を設定するには:
- パブリッシャーアカウントでログインプロジェクトのOAuth 2.0認証をセットアップします。
- Unityプロジェクトでアセットをセットアップします。
アドミンページでログインプロジェクトのOAuth 2.0認証を設定する
- パブリッシャーアカウントに移動します。
- サイドメニューでログインをクリックします。
- ログインプロジェクトペインで構成するをクリックします。
- セキュリティブロックに移動してOAuth 2.0セクションを選択します。
- OAuth 2.0を追加するをクリックします。
- OAuth 2.0リダイレクトURIを指定して接続するをクリックします。
- クライアントIDをコピーして保存します。
Unityプロジェクトでアセットをセットアップする
- Unityプロジェクトに移動します。
- メインメニューで
Window > Xsolla > Edit Settings をクリックします。 Inspector パネルで:Authorization method フィールドで、OAuth2.0 を選択します。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アセットは、独自のログインシステムと統合することができます。これを行うには、アプリケーションに決済ステーションアクセストークンによるユーザー認証を実装します。
独自の認証システムを使用する場合のエクソラサーバーとのやり取りの流れは:
- あなたのクライアントは、サーバーに認証リクエストを送信します。
- サーバーはユーザーを認証し、エクソラサーバーにリクエストを送信して決済ステーションアクセストークンを受け取ります。
- エクソラサーバーが決済ステーションアクセストークンを返す。
- サーバーは、決済ステーションアクセストークンをクライアントに渡します。
- SDKメソッドは、受け取った決済ステーションアクセストークンを認証トークンとして使用し、ゲーム内ストアを開き、支払い、インベントリの管理を行います。
ペイステーションアクセストークンを取得する
アプリケーションのバックエンドで、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リクエスト:
http
- http
- curl
- php
- C#
- python
- ruby
- java
- javascript
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リファレンスのリクエストとレスポンスの例を参照してください。
custom_parameters
、purchase
など)は、認証トークンを受け取るためのものではありませんので、渡さないでください。ユーザーJWTを使用する
決済ステーションアクセストークンを使用して、ゲーム内ストアを開設して、支払い、インベントリ管理を行うには、SDKメソッドのXsollaLogin.Instance.Token
およびXsollaStore.Instance.Token
プロパティにアクセストークンを渡します。
チュートリアルでは、認証トークンの使用例を紹介しています:
期限切れ後に新しい決済ステーションアクセストークンを受け取るためのロジックを実装します。ユーザーがアプリケーションに再度ログインする必要がないように、バックグランドモードで新しいトークンを取得することをお勧めします。
ネイティブ認証は、ユーザーがモバイルデバイスに設定されたソーシャルネットワークアカウントを介してアプリケーションにログインすることを可能にします。
ユーザーが初めてログインすると、ソーシャルネットワーキングアプリケーションが起動し、ユーザー認証の許可を求めます。その後は、ユーザーが何もしなくても自動的に認証が行われます。
現在、SDKは以下のソーシャルネットワーク経由のネイティブ認証を実装しています:
ネイティブ認証を設定するには:
- Android用のUnityプロジェクトビルドを作成します。
- ソーシャルネットワークの開発者アカウントでアプリケーションの設定を行います:
- Facebookによる認証の場合:
- 登録して、新しいアプリケーションを作成します。
- Facebook開発者アカウントで、アプリケーションページを設定します。
- Googleによる認証の場合:Google API Consoleでプロジェクトを設定します。
- WeChatによる認証の場合:
- 登録して、新しいアプリケーションを作成します。
- 審査のためにアプリケーションを提出してください。
- QQによる認証の場合:
- 登録して、新しいアプリケーションを作成します。
- 審査のためにアプリケーションを提出してください。
- Facebookによる認証の場合:
- エクソラ側でソーシャルネットワークによる認証を設定します:
- FacebookとGoogleの場合は、パブリッシャーアカウントでソーシャルコネクションを設定します。
- WeChatとQQの場合は、あなたのアカウントマネージャーをお問い合わせてください。
- Unityプロジェクトのアセットを設定します。
Android用Unityプロジェクトビルドを作成する
- Unityプロジェクトに移動します。
- メインメニューの
File > Build settings をクリックします。 Platform パネルのAndroid をクリックします。Build をクリックします。- ハッシュキーが形成されていることを確認します:
- メインメニューの
Window > Xsolla > Edit Settings をクリックします。 - ハッシュキーが
Android debug hash key フィールドに表示されていることを確認します。
- メインメニューの
さらにネイティブ認証を構成するには、次のものが必要です:
File > Build settings でAndroidプラットフォームを選択すると、Inspector パネルにPackage Name が表示されます。Window > Xsolla > Edit Settings > Inspector > Android class name でAndroid class name が表示されます。Window > Xsolla > Edit Settings > Inspector > Android debug hash key でAndroid debug hash key が表示されます。
Facebook開発者アカウントでアプリケーションページをセットアップする
- Facebook開発者アカウントのプロジェクト設定に移動します。
- 設定>基本に移動します。
- プラットフォームを追加するをクリックし、Androidを選択します。
- Google Playパッケージ名フィールドでのUnityプロジェクトから
Package Name を指定します。 - クラス名フィールドでのUnityプロジェクトから
Android class name を指定します。 - ハッシュキーフィールドでのUnityプロジェクトから
Android debug hash key を指定します。 - 変更を保存するをクリックします。
さらにネイティブ認証の設定を行うには、設定 > 基本セクションのプロジェクト設定にあるアプリIDとアプリシークレットが必要です。
Google API Consoleでプロジェクトをセットアップする
- Google API Consoleに移動します。
- 新しいプロジェクトをクリックします。
- プロジェクト名と場所を指定して保存するをクリックします。
- 作成したプロジェクトに移動してサイドメニューでのOAuth同意画面をクリックします。
- 外部オプションを選択して作成するをクリックします。
- 必要なパラメータを指定して、保存をクリックします。サイドメニューで
- 資格情報をクリックします。
- Unityアプリ用のOAuth 2.0クライアントを作成します:
- 資格情報を作成するをクリックして、OAuthクライアントIDを選択します。
- アプリケーションタイプフィールドでAndroidを指定します。
- 名称を指定します。
- パッケージ名フィールドであなたのUnityプロジェクトから
Package Name を指定します。 - SHA-1証明書のフィンガープリントフィールドであなたのUnityプロジェクトから
Android debug hash key を指定します。 - 作成するをクリックします。
- OKをクリックします。
- Webアプリケーション用のOAuth 2.0クライアントを作成します:
- 資格情報を作成するをクリックして、OAuthクライアントIDを選択します。
- アプリケーションタイプフィールドでウェブアプリケーションを指定します。
- 名称を指定します。
- 許可されたリダイレクトURIセクションでURIを追加するをクリックして、
https://login.xsolla.com/api/social/oauth2/callback
URIを指定します。 - 作成するクリックします。
- OKクリックします。
さらにネイティブ認証の設定を行うには、ウェブアプリケーションのクライアントIDの設定にあるクライアントIDとクライアントシークレットが必要です。
エクソーラアドミンページでログインプロジェクトのソーシャルコネクションを設定します
- パブリッシャーアカウントでプロジェクトを開きます。
- サイドメニューのログインをクリックし、ログインプロジェクト > ログインプロジェクト > ソーシャル接続に移動します。
- Facebook経由で認証を設定するには:
- Facebookパネルで編集するをクリックしてステータスを切断済みを変更します。
- アプリケーションIDフィールドでのFacebook開発者アカウントからアプリIDを指定します。
- アプリケーションシークレットフィールドでのFacebook開発者アカウントからアプリシークレットを指定します。
- 接続するをクリックします。
- Google経由で認証を設定するには:
- Googleパネルで編集するをクリックしてステータスを切断済みを変更します。
- アプリケーションIDフィールドでのGoogle API ConsoleからクライアントIDを指定します。
- アプリケーションシークレットフィールドでのGoogle API Consoleからクライアントシークレットを指定します。
- 接続するをクリックします。
Unityプロジェクトのアセットをセットアップする
- Unityプロジェクトに移動します。
- メインメニューで
Window > Xsolla > Edit Settings をクリックします。 - アプリケーションIDを指定します:
Facebook App ID フィールドでのFacebook開発者アカウントからアプリIDを指定します。Google server ID フィールドでのGoogle API ConsoleからウェブアプリケーションのクライアントIDを指定します。WeChat App ID でAppIDをWeChatアプリケーションの設定から指定します。QQ App ID でAppIDをQQアプリケーションの設定から指定します。
ネイティブ認証により、プレーヤーはインストールされたSteamアプリケーションを介してアプリケーションに入ることができます。
ネイティブ認証を設定するには:
- パブリッシャーアカウントでStreamを介してサイレント認証をセットアップします。
- Unityプロジェクトを構成します。
- イベントの処理を構成します。
- Steamを介して認証を確認します。
Unityプロジェクトを構成する
steam_appid.txt
ファイルを手動で作成し、SteamにアプリケーションIDを入力します。次に、このファイルをプロジェクトのAssets
カタログに配置します。
Assets
カタログでsteam_appid.txt
ファイルがあります。このファイルには、デモプロジェクトのSteamのアプリケーションIDが含まれています。- Unityプロジェクトを開きます。
- メインメニューで、
Window > Xsolla > Edit Settings に移動します。 Inspector パネルで:Use Steam authorization ボックスをチェックします。Steam App ID フィールド、SteamでアプリケーションIDを指定します。この値は、steam_appid.txt
ファイルの値と同じである必要があります。
イベントの処理を構成する
Steam経由でユーザーを認証するには、SteamAuth
メソッドを介してsession ticket
>を取得する必要があります。RequestTokenBy
メソッドを呼び出す際に受信した値を渡します。その結果、APIを呼び出すときに使用されるトークンを取得します。
Steamによる認証を確認する
- スタンドアロンプラットフォーム用のUnityプロジェクトのビルドを作成します。
- Steamを起動してログインします。
- アプリケーションを起動します。すべてが正しければ、Steamポップアップウィンドウが表示されます。
トークンの無効化により、アプリケーション内のユーザー認証データのセキュリティを向上させることができます。このオプションを有効にすると、ユーザーが認証を行うたびに無効になる古いトークンが新しいトークンに置き換わります。
SDKを利用する場合、with_logout
パラメータの値が1
の場合、
Unityプロジェクトでトークン無効化を有効にするには:
- メインメニューで、
Window > Xsolla > Edit Settings に移動します。 Inspector パネルで、Enable JWT invalidation チェックボックスをオンにします。
エクソラランチャーを使用して、アプリケーションをユーザーに配信したり、更新したりすることができます。ランチャーには認証ツールが組み込まれています。ユーザー名とパスワードを再入力する必要がないように、ランチャーを介してアプリケーションの認証を設定します。
SDKとランチャーを連携するためにセットアップする
- パブリッシャーアカウントでランチャーをセットアップします。
config.json
ファイルで、以下のオブジェクトの値を変更するだけで十分です:launcher_project_id
— パブリッシャーアカウント > ランチャー > 一般設定 > 一般情報にあるランチャーIDを指定します。login_project_id
— パブリッシャーアカウント > ランチャー > 一般設定 > 認証にあるログインIDを指定します
- あなたのアプリケーションのランチャー認証ロジックを実装します。
- ランチャーインストールファイルとビルドアーカイブを生成します。
- アプリケーションのビルドを作成します。
- アプリケーションのビルドをエクソラアップデートサーバーにアップロードします。
ランチャーによる認証ロジックを実装する
ランチャーによるアプリケーションでの認証の流れは以下の通り:
- ユーザーはランチャーで認証されています。
- ユーザーはアプリケーションをインストールして実行します。
- ランチャーは、アプリケーションを実行し、コマンドラインでユーザーのパラメータを渡します。認証トークンは、
xsolla-login-token
パラメータで渡されます。 - アプリケーションは、コマンドラインパラメーターを処理し、トークンを取得します。トークン処理スクリプトの例は、デモプロジェクトで見ることができます。
- アプリケーションは受信したトークンを検証します。トークン検証スクリプトの例は、デモプロジェクトで見ることができます。
- アプリケーションは、認証ページを表示することなく、自動的にユーザーを認証します。ユーザー認証スクリプトの例は、デモプロジェクトで見ることができます。
XsollaLogin.Instance.Token
とXsollaStore.Instance.Token
の属性に渡します。アプリケーションのビルドを作成する
- Unityプロジェクトに移動します。
- メインメニューで
Window > Xsolla > Edit Settings をクリックします。IInspector パネルで:Project ID フィールドで、パブリッシャーアカウント > プロジェクト設定 > プロジェクトIDにあるプロジェクトIDを指定します。Login ID フィールドで、パブリッシャーアカウント > ランチャー > 一般設定 > 認証にあるログインIDを指定します。
- トークンが処理されるユーザー認証シーンを実行します。
- メインメニューで
File > Build settings をクリックし、そしてAdd Open Scenes をクリックします。認可シーンがリストの最初に追加されていることを確認してください。 Build をクリックします。- ポップアップウィンドウで、完成したビルドが置かれるディレクトリへのパスを指定します。
デバイスID認証は、ユーザーが登録データを入力することなく、モバイルデバイスでアプリケーションを使い始めることを可能にします。ユーザーが初めてデバイスIDを使ってアプリケーションにログインすると、新しいアカウントが自動的に作成され、ユーザー名やメールアドレスなどを入力する必要がありません。
デバイス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 | 指定されたデバイスを現在のユーザーアカウントからリンク解除します。 |
誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。