本教程指导您完成使用 Facebook 和 Unity 进行 PlayFab 身份验证的示例。
要求
实现
注册 Facebook 应用程序
- 将鼠标移到 我的应用 按钮上方。
- 选择 添加新应用,如下图所示。
此时将打开一个新的 Application 弹出窗口。
- 输入 应用程序的名称。
- 输入 联系人电子邮件。
- 导航至 Settings 选项卡。
- 然后转到 Basic 子选项卡。
- 找到 Application ID。
- 将其复制到易于访问的安全位置。 我们稍后将使用它来设置 Facebook SDK。
- 在列表中找到 应用。
- 验证它是否具有分配的 用户令牌。
- 在 应用程序管理器 页上,导航到 + 添加产品。
- 找到 Facebook 登录 条目,然后选择 入门。
此时应会打开一个包含登录产品设置的页面。
- 确保已打开 登录 产品 设置 页。
- 验证 客户端 OAuth 和 Web OAuth 是否都已打开。
设置 Facebook SDK
打开您的 Unity 项目:
- 在文件菜单中选择 Facebook。
- 然后选择 Edit Settings。
Inspector 窗口将显示当前的 Facebook SDK 配置。
- 在相应字段中输入应用程序 ID,如下图所示。
简单的身份验证脚本
创建一个新的游戏对象,将其重命名为 PlayfabFacebookAuthExample,如下图所示。
- 创建名为 Playfab FacebookAuthExample.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);
}
}
测试
在编辑器中运行应用程序
- 选择 Play 按钮。 Facebook 完成初始化(并且进行了身份验证调用)后,游戏视图中将显示 Facebook 身份验证对话框。
- 输入 用户令牌。
- 选择 发送成功 按钮,如下图所示。
- 查看控制台输出。 这时应该显示我们的调试语句,如下图所示。
- 如果未看到任何错误,则表示身份验证成功。
在 Android 上运行应用程序
在 Android 上启动应用程序之前,您需要执行其他配置步骤:
- 首先,您需要确保选择了 Android 平台,并且设置了唯一的程序包 ID(如下面的示例所示)。
接下来,在 Facebook Application Console 中:
- 导航到 基本 设置。
- 选择 + 添加平台,如下面提供的示例所示。
- 然后,从可用平台列表中选择 Android。
此时会显示一个具有平台特定设置的面板。
- 填入 程序包 ID。
- 选择 Save(Save 按钮隐藏在页面右下角处)。
像往常一样在 Android 设备上构建和运行应用程序。
- 应用程序应会显示 Facebook 登录页面来作为欢迎页面。
- 登录后,在屏幕上查看不断更改的消息。
- 最后,您应会看到一条消息,指示在 PlayFab 中成功完成身份验证。 下面提供的示例显示了整个过程。
在 iOS 上运行应用程序
在 iOS 上启动应用程序之前,您必须执行其他配置步骤。
- 首先,确保已选择 iOS 平台。
- 然后,设置唯一的 捆绑 ID 如下面提供的示例所示。
- 请确保创建您自己的唯一程序包 ID。
接下来,在 Facebook Application Console 中:
- 导航到 基本 设置。
- 选择 + 添加平台,如下面提供的示例所示。
- 从可用平台列表中选择 iOS。
此时会显示一个具有平台特定设置的面板。
- 填入 程序包 ID。
- 选择 Save 按钮(Save 按钮隐藏在页面右下角处)。
- 接下来,像往常一样构建应用程序。
- 完成后,使用 XCode 打开项目。
- 选择项目以打开项目设置。
- 验证 Bundle ID 是否与您的唯一程序包 ID 匹配。
- 确保选择了正确的设备。
- 选择正确的 Identity Team。
最后,像往常一样运行应用程序。
- 启动后,应用程序将允许您使用 Web 浏览器登录 Facebook。
- 完成后,将调用 PlayFab 身份验证,并显示一条消息来说明结果。
通过 PlayFab Game Manager 进行检查
在 Game Manager 中打开您的 PlayFab 作品。
- 导航到仪表板。
- 请查看 PlayStream Debugger 面板来检查最新事件。 您应会看到以下示例中显示的 Facebook 身份验证事件。
至此,您已成功实现 PlayFab 的 Facebook 身份验证集成。