このチュートリアルでは、Facebook と Unity を使用した PlayFab 認証について、例を使用して説明します。
要件
- Unity 5+ および作成済みのプロジェクト。
- テスト用の Facebook アカウント。
- Facebook SDK がプロジェクトにインポート済み。
- PlayFab タイトルが登録済み。
- タイトル リファレンスが設定済みのプロジェクトに PlayFab SDK がインポート済み。
- ログインの基本とベスト プラクティス を理解していること。
実装
Facebook アプリケーションの登録
まず、Facebook のデベロッパー用ポータル に移動します。
- [My Apps] (マイ アプリ) の上にマウスを移動します。
- 次の図のように、[Add a New App] (新しいアプリを追加) を選択します。
新しい [Application] (アプリケーション) ポップアップが開きます。
- アプリケーションの名前を入力します。
- [Contact Email] (連絡先メール) を入力します。
注意
次の図に示すように、必ず一意のアプリケーション名とメール アドレスを使用してください。
- [設定] タブに移動します。
- その後、[Basic] (基本) サブタブに移動します。
-
アプリケーション ID を探します。
- これを、参照しやすい安全な場所にコピーしてください。 後で、Facebook SDK の設定時に使用します。
Facebook アクセス トークン ツールに移動します。
- 一覧からお客様のアプリを探します。
- これにユーザー トークンが割り当てられていることを確認します。
注意
ユーザー トークンが割り当てられていない場合は、画面の右側にあるボタンを使用してユーザー トークンを要求します。 新しいユーザー トークンが必要な場合にはこのページをご覧ください。 PC でのテスト中に認証が失敗した場合、トークンが期限切れになっている可能性があります。 このページを更新して、新しいユーザー トークンを取得してからテストを再実行してください。
- [アプリケーション マネージャー] ページで、[+ Add Products] (+ 製品を追加) に移動します。
- [Facebook Login] (Facebook ログイン) エントリを探して、[Get Started] (開始) を選択します。
[ログイン] 製品設定を含むページが表示されます。
- [ログイン] 製品設定のページが開いていることを確認します。
- [Client OAuth] (クライアント OAuth) と [Web OAuth] の両方が有効になっていることを確認します。
Facebook SDK の設定
お客様の Unity プロジェクトを開きます。
- [ファイル] メニューの [Facebook] を選択します。
- 次に、[Edit Settings] (設定の編集) を選択します。
[Inspector] ウィンドウが表示され、現在の Facebook SDK の設定が表示されます。
- 次の図のように、対応するフィールドにアプリケーション ID を入力します。
簡単な認証スクリプト
次の図のように、新しいゲーム オブジェクトを作成して、名前を PlayfabFacebookAuthExample に変更します。
- PlayfabFacebookAuthExample.cs というスクリプトを作成します。
- 次の図に示すように、このスクリプトをゲーム オブジェクトに追加します。
PlayfabFacebookAuthExample.cs
内に次のコードを入力します。
// Import statements introduce all the necessary classes for this example.
using Facebook.Unity;
using PlayFab;
using PlayFab.ClientModels;
using UnityEngine;
using LoginResult = PlayFab.ClientModels.LoginResult;
public class PlayfabFacebookAuthExample : MonoBehaviour
{
// holds the latest message to be displayed on the screen
private string _message;
public void Start()
{
SetMessage("Initializing Facebook..."); // logs the given message and displays it on the screen using OnGUI method
// This call is required before any other calls to the Facebook API. We pass in the callback to be invoked once initialization is finished
FB.Init(OnFacebookInitialized);
}
private void OnFacebookInitialized()
{
SetMessage("Logging into Facebook...");
// Once Facebook SDK is initialized, if we are logged in, we log out to demonstrate the entire authentication cycle.
if (FB.IsLoggedIn)
FB.LogOut();
// We invoke basic login procedure and pass in the callback to process the result
FB.LogInWithReadPermissions(null, OnFacebookLoggedIn);
}
private void OnFacebookLoggedIn(ILoginResult result)
{
// If result has no errors, it means we have authenticated in Facebook successfully
if (result == null || string.IsNullOrEmpty(result.Error))
{
SetMessage("Facebook Auth Complete! Access Token: " + AccessToken.CurrentAccessToken.TokenString + "\nLogging into PlayFab...");
/*
* We proceed with making a call to PlayFab API. We pass in current Facebook AccessToken and let it create
* and account using CreateAccount flag set to true. We also pass the callback for Success and Failure results
*/
PlayFabClientAPI.LoginWithFacebook(new LoginWithFacebookRequest { CreateAccount = true, AccessToken = AccessToken.CurrentAccessToken.TokenString},
OnPlayfabFacebookAuthComplete, OnPlayfabFacebookAuthFailed);
}
else
{
// If Facebook authentication failed, we stop the cycle with the message
SetMessage("Facebook Auth Failed: " + result.Error + "\n" + result.RawResult, true);
}
}
// When processing both results, we just set the message, explaining what's going on.
private void OnPlayfabFacebookAuthComplete(LoginResult result)
{
SetMessage("PlayFab Facebook Auth Complete. Session ticket: " + result.SessionTicket);
}
private void OnPlayfabFacebookAuthFailed(PlayFabError error)
{
SetMessage("PlayFab Facebook Auth Failed: " + error.GenerateErrorReport(), true);
}
public void SetMessage(string message, bool error = false)
{
_message = message;
if (error)
Debug.LogError(_message);
else
Debug.Log(_message);
}
public void OnGUI()
{
var style = new GUIStyle { fontSize = 40, normal = new GUIStyleState { textColor = Color.white }, alignment = TextAnchor.MiddleCenter, wordWrap = true };
var area = new Rect(0,0,Screen.width,Screen.height);
GUI.Label(area, _message,style);
}
}
テスト
エディターでのアプリケーションの実行
- [プレイ] を選択します。 Facebook で初期化 (および認証呼び出し) が実行されると、ゲーム ビューに Facebook の認証ダイアログボックスが表示されます。
- ユーザー トークンを入力します。
- 次の図に示すように、[Send Success] (成功の送信) を選択します。
- コンソール出力を確認します。 次の図に示すように、デバッグ ステートメントが表示されます。
- エラーが表示されない場合は、その認証が成功したことを意味します。
Android でのアプリケーションの実行
Android でアプリケーションを起動するには、さらに次の設定を実行する必要があります。
- 最初に、次の例のように、Android プラットフォームが選択されていること、および一意のパッケージ ID が設定されていることを確認する必要があります。
注意
必ず一意のパッケージ ID を作成してください。
ヒント
省略可能な手順: Open SSL をインストールして、それを PATH 環境変数に追加します。 インストールしない場合、Unity はビルド中にエラーを生成しますが、問題ありません。 このエラーによりビルドが停止したり、実行に影響したりすることはありません。
次に、Facebook アプリケーション コンソールで、以下を実行します。
- [Basic] (基本) 設定に移動します。
- 次に示す例のように、[+ Add Platform] (+ プラットフォームを追加) を選択します。
- その後、使用できるプラットフォームのリストから、[Android] を選択します。
プラットフォーム個別の設定パネルが開きます。
- [パッケージ ID] に入力します。
- [Save] (保存) を選択します ([Save] (保存) はページの右下隅に隠れています)。
Android デバイスで通常どおりアプリケーションをビルドして実行します。
- アプリケーションで、Facebook のサインイン ページが開きます。
- サインインした後は、画面のメッセージで変更を確認します。
- 最後に、PlayFab で認証が成功したことを示すメッセージが表示されます。 全体の手順は次の例に示すようになります。
iOS でのアプリケーションの実行
iOS でアプリケーションを起動するには、さらに次の設定を実行する必要があります。
- 最初に、iOS プラットフォームが選択されていることを確認する必要があります。
- また、次の例のように、一意のバンドル ID を設定します。
- 必ず一意のパッケージ ID を作成してください。
次に、Facebook アプリケーション コンソールで、以下を実行します。
- [Basic] (基本) 設定に移動します。
- 次に示す例のように、[+ Add Platform] (+ プラットフォームを追加) を選択します。
- 使用できるプラットフォームのリストから、[iOS] を選択します。
プラットフォーム個別の設定パネルが開きます。
- [パッケージ ID] に入力します。
- [Save] (保存) を選択します ([Save] (保存) はページの右下隅に隠れています)。
- 次に、通常どおりアプリケーションをビルドします。
- ビルドの完了後、XCode を使用してプロジェクトを開きます。
- [Project] (プロジェクト) を選択して [Project Settings] (プロジェクト設定) を開きます。
- バンドル ID が一意のパッケージ ID と一致することを確認します。
- 正しいデバイスを選択していることを確認してください。
- 現在の ID チームを選択します。
最後に、通常どおりアプリケーションを実行します。
- 実行されると、アプリケーションで、Web ブラウザーを使用して Facebook にログインできます。
- ログインすると、PlayFab 認証が呼び出され、結果がメッセージで表示されます。
PlayFab ゲーム マネージャーを使用した確認
ゲーム マネージャーで PlayFab タイトルを開きます。
- ダッシュボードに移動します。
- [PlayStream デバッガー] パネルを参照して最新のイベントを確認します。 次の例で示されるように、Facebook 認証イベントが表示されます。
これで、PlayFab に Facebook 認証が正常に統合されました。