PlayFabとのインテグレーション
イントロダクション
このドキュメントでは、PlayFabとPhotonのインテグレーションをサポートします。
このアプローチを使用すれば、PlayFabとPhotonを併用して、最大限活用できます。
請求は、それぞれのサービスについて個別に発生します。
PlayFabとのWebHooks統合を有効にする方法にの詳細については、*Fusion WebHooks ドキュメント*を参照してください。
カスタム認証
ダッシュボードの設定
以下に、PlayFabでカスタム認証をセットアップする際の手順を示します:
- Photon ダッシュボードに進みます。
- アプリケーションを選択するか、またはアプリケーションを新規作成します。
- 「管理」をクリックします。
- 「認証」セクションで、「カスタムサーバー」をクリックします。
- [必須] 認証URLを
https://{PlayFabTitleId}.playfabapi.com/photon/authenticateに設定します。
{PlayFabTitleId}プレースホルダーを実際のPlayFab TitleIdで置換するよう留意してください。
{および}、または波括弧をURLに入れないようにしてください。
例: PlayFab TitleIdがAB12の場合:https://AB12.playfabapi.com/photon/authenticate - 「作成」をクリックして保存します。
- [推奨] 「設定済みのプロバイダと関係のない、匿名クライアントの接続を許可する」をチェックしないでください。
クライアントコード
クライアントは、キー/値のセットを機密情報として送信するよう予期されています。
- ログインしたユーザーのPlayFabユーザーID
- Photonトークン(GetPhotonAuthenticationToken クライアントAPIメソッドを使用して取得).
以下の例は、PlayFabを使用してプレイヤーを認証し、後にFusionで使用するために認証値を保存する方法になります。
C#
using Fusion.Photon.Realtime;
using PlayFab;
using PlayFab.ClientModels;
using UnityEngine;
public static class PlayFabAuthenticator
{
public static AuthenticationValues AuthValues { get; private set; }
private static string _playFabPlayerIdCache;
/*
* ステップ 1
* 現在のPlayFabユーザーは通常通り認証しています。
* この場合、LoginWithCustomID API呼び出しを使って、簡潔にしています。
* どのようなログインメソッドでも使用できます。
* カスタムIDにはPlayFabSettings.DeviceUniqueIdentifierを使用しています。
* 認証に成功した場合、次のステップとしてRequestPhotonTokenをコールバックに受け渡しています。
*/
public static void AuthenticateWithPlayFab()
{
Debug.Log("PlayFab authenticating using Custom ID...");
PlayFabClientAPI.LoginWithCustomID(new LoginWithCustomIDRequest()
{
CreateAccount = true,
CustomId = PlayFabSettings.DeviceUniqueIdentifier
}, RequestPhotonToken, OnPlayFabError);
}
/*
* ステップ 2
* PlayFabからPhoton認証トークンをリクエストします。
* Photonの認証トークンはPlayFabとは異なるので、これは欠かせないステップです。PlayFab SessionTicketを直接使用することはできないので、明示的にトークンをリクエストする必要があります。このAPI呼び出しには、Photon AppIDを受け渡す必要があります。App IDはハードコードされている可能性がありますが、この例では、PhotonAppSettingsクラスで便利な静的フィールドを使用することでアクセスしています。問題なくトークンを取得したら、AuthenticateWithPhotonに受け渡して、次のステップでコールバックとします。
*/
private static void RequestPhotonToken(LoginResult loginResult)
{
Debug.Log("PlayFab authenticated. Requesting photon token...");
//We can player PlayFabId. This will come in handy during next step
_playFabPlayerIdCache = loginResult.PlayFabId;
PlayFabClientAPI.GetPhotonAuthenticationToken(new GetPhotonAuthenticationTokenRequest()
{
PhotonApplicationId = PhotonAppSettings.Global.AppSettings.AppIdFusion
}, AuthenticateWithPhoton, OnPlayFabError);
}
/*
* ステップ 3
* これが最終かつ最も簡単なステップとなります。AuthenticationValuesインスタンスを作成し保管します。このクラスはPhoton環境内でプライヤーを認証する方法を説明しています。
*/
private static void AuthenticateWithPhoton(GetPhotonAuthenticationTokenResult authenticationTokenResult)
{
Debug.Log("Photon token acquired: " + authenticationTokenResult.PhotonCustomAuthenticationToken + " Authentication complete.");
//AuthTypeをカスタムに設定しています。独自のPlayFab認証手順を採用しているという意味です。
var customAuth = new AuthenticationValues() { AuthType = CustomAuthenticationType.Custom };
//"username"パラメータを追加しています。ここで注意:PlayFabでは、このパラメータにユーザー名ではなくPlayFabID(!)を入れるようになっています。
customAuth.AddAuthParameter("username", _playFabPlayerIdCache); // PlayFab カスタム認証サービスにより期待されています。
//"token"パラメータを追加しています。PlayFabでは、前のステップ中にPhoton Authentication Token発行を含むことになっています。
customAuth.AddAuthParameter("token", authenticationTokenResult.PhotonCustomAuthenticationToken);
//ここで、この認証パラメータを保管してアプリケーション全体で使えるようになります。
AuthValues = customAuth;
}
private static void OnPlayFabError(PlayFabError obj)
{
Debug.Log(obj.GenerateErrorReport());
}
}
FusionアプリケーションでPlayFabAuthenticatorクラスを使用する方法は以下の通りです。
C#
public class RunnerManager : MonoBehaviour
{
private void Awake()
{
PlayFabAuthenticator.AuthenticateWithPlayFab();
}
private static async Task<NetworkRunner> StartGame(GameMode gameMode)
{
var runner = CreateNetworkRunner(); // カスタムNetworkRunner オブジェクトを作成します
// PlayFabAuthenticatorAuthValuesを使用してプレイヤーを認証します
var result = await runner.StartGame(new StartGameArgs()
{
GameMode = gameMode,
AuthValues = PlayFabAuthenticator.AuthValues // PlayFab認証値を取得します
});
return runner;
}
// ... その他のメソッド
}
Back to top