Version: jp

player-auth

note

Unity マッチメイキングは現在、クローズドベータテスト中です。このサービスの詳細については、マッチメイキングに関するドキュメントを参照してください。チュートリアル、FAQ、API 情報が含まれます。

Multiplay を使用してマルチプレイヤーゲームをホストすることに興味をお持ちですか?詳細についてはお問い合わせください。

オンボーディング#

デリゲートトークン API を使用するには、Unity ユーザー認証サービス(UAS)に顧客がオンボーディングされている必要があります。マッチメーカーベータ中は、これが自動的に発生するようにしてください。

オンボーディング完了後、Multiplay は次の情報を顧客に提供します。

  • client_id
  • client_secret
note

client_secret は、サーバー間の API 呼び出しの安全性を確保するために使用されます。安全なプロセスを使用して送信されます。

ユーザーフロー#

使用されるトークンには、「サービストークン」と「デリゲートトークン」という 2 つの種類があります。「サービストークン」は「デリゲートトークン」を作成するために使用され、Multiplay によって提供される client_idclient_secret を使用して認証が行われます。

「デリゲートトークン」には matchmakingmatchmaking.read の 2 つの異なるスコープがあります。matchmaking スコープは、マッチメイキングサービスへの全アクセス(読み取り、書き込み、削除)を提供する一方で、matchmaking.read スコープはマッチメイキングサービスへの読み取り専用アクセス(プレイヤーのアクセストークン)を提供します。

ゲームサービスの定義

ゲームサービスは中間サーバー/サーバーレス/アプリケーションとして記述され、特定のゲーム関連の操作を処理します。これは、ゲーム開発者によって開発および管理されます。

例として、ロビーサービス認証サーバーなどが挙げられますが、これらに限りません。

サードパーティのソリューションの一部として、PlayfabGameSparksFirebase などが挙げられます。

推奨されるフローは次のとおりです。

  • ゲームサービスが client_idclient_secret を使用して「サービストークン」を作成します。
  • ゲームサービスが作成した「サービストークン」を使用して matchmaking スコープの「デリゲートトークン」を生成します。
  • ゲームクライアントはゲームサービスから matchmaking.read スコープの「デリゲートトークン」(プレイヤーのアクセストークン)をリクエストし、ゲームサービスは代わりに正しいトークンを生成してそれをゲームクライアントに渡します。
  • ゲームクライアントはプレイヤーのアクセストークンをローカルにキャッシュし、後でそれを使用してマッチメイキングチケットのステータスを照会します。
  • ゲームクライアントはゲームサービスからマッチメイキングチケットを作成するようリクエストできます。
  • ゲームサービスは(matchmaking スコープの「デリゲートトークン」を使用して)新しいチケットを作成し、そのチケットの作成者をリクエストを送信したクライアントの ID と一致するように設定して、その新しく作成されたチケットの ID をゲームクライアントに転送します。
  • これでゲームクライアントはローカルにキャッシュされたプレイヤーのアクセストークンをチケット ID と共に使用して、チケットのステータスを照会できます。
note

matchmaking スコープの「デリゲートトークン」は、他のユーザーの代わりにマッチメイキングチケットを作成できます。

matchmaking.read スコープの「デリゲートトークン」(プレイヤーのアクセストークン)は、同じユーザーによって作成されたチケットのみ読み取ることができます。

caution

サーバー間トークンの有効期限は 1 時間です。トークンの有効期限が切れたら、サーバー側で新しいトークンを再生成する必要があります。

ユーザー認証フローのサンプル画像

API#

デリゲートトークン API は、ゲームサービスによって呼び出されて、プレイヤーのアクセストークンを生成します。このプロセスには、サーバー間呼び出しを認証する、アクセストークン(「サービストークン」)が必要です。この API 呼び出しがクライアント側から行われることはありません。

API エンドポイント:https://api.prd.identity.corp.unity3d.com

サービストークンの生成#

POST /oauth2/token を使用してサーバー間呼び出し用のアクセストークンを生成します。

デリゲートトークンの生成#

POST /oauth2/delegate-token を使用して、「サービストークン」を使用して承認された matchmaking スコープか matchmaking.read スコープのいずれかのデリゲートトークンを生成します。

コントラクト#

CreateToken#

{
"grant_type": "client_credentials",
"client_id": "2cbb3f35-2233-47a4-ae91-01460c8526df",
"client_secret": "...",
"scope": "identity.delegate-token"
}
フィールド説明
grant_typeアクセストークンの付与タイプ。デリゲートトークンフローでは、client_credentials にする必要があります。string
client_id顧客のオンボーディング中に生成される OAuth クライアント ID。string
client_secret顧客のオンボーディング中に生成される OAuth クライアントシークレット。string
scopeサーバー間アクセストークンのスコープ。そのトークンがデリゲートトークン API を呼び出せるように、スコープは identity.delegate-token にする必要があります。string

TokenResponse#

{
"access_token": "eyJhbGc...10aw",
"scope": "identity.delegate-token",
"token_type": "bearer",
"expires_in": 3599,
}
フィールド説明
access_tokenサーバーがデリゲートトークン API を呼び出すためのアクセストークン。これはユーザー ID とスコープが含まれる JWT トークンです。string
scopeアクセストークンに付与されるスコープ。string
token_typeレスポンストークンのタイプ。この値は常に bearer です。string
expires_inアクセストークンの有効期限が切れるまでの期間(秒)。デフォルト値は 3600 秒です。number

CreateDelegateToken#

{
"user_id": "142857",
"scope": "matchmaking"
}
フィールド説明
user_idゲームの認証サーバーによって提供されるユーザー ID。これはそのプレイヤーの一意識別子です。string
scopeアクセストークンに付与されるスコープ。matchmaking または matchmaking.read のいずれかのみになります。string

DelegateTokenResponse#

{
"access_token": "eyJhbGc...10aw",
"expires_in": 3599
}
フィールド説明
access_tokenユーザーのアクセストークン。これはユーザー ID とスコープが含まれる JWT トークンです。string
expires_inアクセストークンの有効期限が切れるまでの期間(秒)。デフォルト値は 3600 秒です。number