Windows
本文旨在介绍如何设置 Facebook 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 Facebook 渠道登录。
前提条件
1. 在 Facebook 开发者平台上配置应用
1. 注册账号
在为应用配置平台之前,请注册 Facebook 开发者账号并在 Facebook App Dashboard 创建应用。
-
在 Facebook 注册账号并根据提示完成账号认证(Email 或手机认证)。
-
在 Meta for Developers 激活开发者账号。
- 同意协议并继续。
- 完成手机验证。
- 确认邮箱。
- 完成注册。
- 在 Meta for Developers 将 Facebook SDK 添加到项目。
2. 创建应用
- 在右上角点击 Create App。
- 应用类型选择为 Authenticate and request data from users with Facebook Login。
- 选择 Business,如果未显示则请继续下一步。
- 填写基本信息。
INTLConfig.ini
配置文件中的 SDK 的所有配置 应为此处的 App name。
- 同意并继续。
3. 配置应用
按照 Facebook 规范输入隐私协议 URL、用户数据删除和服务条款 URL。如果您不遵守 Facebook 规范,Facebook 可能会在您的应用程序发布后禁用您的应用程序。
已提交到 Facebook 的应用可以继续使用 Facebook Login For Gaming,未提交的新 App 只能使用 Facebook Login。更多详情,请参见 Facebook Login For Gaming。
-
在左侧导航栏中,点击 App Settings > Basic 查看应用程序的基本信息,如 App ID 和 App secret。
-
在 Privacy Policy URL 字段中,输入隐私协议的网址。
-
在 User Data Deletion 字段中,选择数据删除说明 URL,并根据用户的数据删除说明输入网址。
-
在 Terms of Service 字段中,输入服务条款网页的 URL。
-
点击 Add Platform,选择添加 Windows 应用程序.
-
直接输入配置,或点击平台配置界面右上角的 Quick Start,根据指南设置配置。
-
点击 Save Changes 保存配置。
配置 Facebook 登录
- 在 Facebook App Dashboard,点击 Use cases > Customize。
- 在 Facebook Login 下选择 Settings。
- 在 Valid OAuth Redirect URIs,填写
https://common-web.intlgame.com/jssdk/facebooklogincallback.html
和https://test-common-web.intlgame.com/jssdk/facebooklogincallback.html
。 - 在 Allowed Domains for the JavaScript SDK,填写
https://common-web.intlgame.com/
和https://test-common-web.intlgame.com/
。 - 打开 Embedded Browser OAuth Login。
- 在页面底部点击 Save changes 保存配置。
4. 添加测试人员权限
在应用发布之前,只有测试用户或被添加到权限列表中的用户才能访问 Facebook 的功能。
- 在 Facebook App Dashboard 中,点击 Roles。
- 点击 Add Administrators/Add Developers/Add Testers 以添加各个角色。
5. 完成 Facebook 商务认证
某些 Meta 技术或功能需要通过 Meta 商务认证后才可以使用。如需商务认证,请联系 Player Network 助手。
- 获取 Player Network 控制台登录账号。
- 为游戏创建新项目,或加入已有项目。
- 下载 SDK。
- 接入 SDK。
- 在 Player Network 控制台添加 Facebook 为业务的登录鉴权方式。
步骤1:为 Facebook 登录配置 SDK
打开项目的 INTLConfig.ini 文件:
[INTL environment]
# WARNING: You should change this URL to the production environment when you release your game.
INTL_URL = https://test.intlgame.com
GAME_ID = {INTL_GAME_ID}
SDK_KEY = {INTL_SDK_KEY}
[INTL Log]
LOG_LEVEL = 1
LOG_CONSOLE_OUTPUT_ENABLE = 1
LOG_FILE_OUTPUT_ENABLE = 1
LOG_ENCRYPT_ENABLE = 0
LOG_COMPRESS_ENABLE = 0
[Facebook]
FACEBOOK_WEBVIEW_LOGIN_ENABLE = 0
FACEBOOK_CLIENT_REDIRECT_URL = {INTL_FACEBOOK_CLIENT_REDIRECT_URL}
- 将 SDK 后端环境设置为
INTL_URL = https://test.intlgame.com
。 - 将
{INTL_GAME_ID}
和{INTL_SDK_KEY}
替换为 Player Network 控制台 分配的GAME_ID
和SDK_KEY
的值。 - 设置
LOG_LEVEL = 1
、LOG_CONSOLE_OUTPUT_ENABLE = 1
、LOG_FILE_OUTPUT_ENABLE = 1
、LOG_ENCRYPT_ENABLE = 0
和LOG_COMPRESS_ENABLE = 0
,以便在不加密或压缩输出的情况下输出控制台日志和日志文件。 - 设置
FACEBOOK_WEBVIEW_LOGIN_ENABLE
的值。默认值为 0,表示 Windows 平台使用系统浏览器登录。如果用户将该值设为 1,Windows 平台将使用 WebView 登录。 - 将
{INTL_FACEBOOK_CLIENT_REDIRECT_URL}
替换为登录后重定向到的网页。
如果 INTLConfig 中的 FACEBOOK_WEBVIEW_LOGIN_ENABLE
设置为 1
,则需要集成 INTLWebView 插件,否则登录将无法成功。
步骤2:添加 Facebook 登录
使用浏览器登录使用环回 IP 地址向系统返回数据。由于数据不会离开系统,也无需通过 Windows 防火墙,因此无需配置 Windows 防火墙。
Windows 平台的游戏如果需要玩家通过 Facebook 登录,需要打开 Facebook 登录网页。开发人员可以通过以下两种方式打开 Web 客户端进行登录:
- 若需使用 Player Network SDK 内置的 WebView 打开 Facebook 登录页面,需在调用登录 API 时将
extraJson
设置为"webview_login":true
。 - 若需使用系统浏览器打开 Facebook 登录页面,需在调用登录 API 时将
extraJson
设置为"webview_login":false
。
除此之外,开发人员还可以通过在 INTLConfig
配置文件中的 FACEBOOK_WEBVIEW_LOGIN_ENABLE
值配置打开 Facebook 登录网页的默认方式。
Player Network 还支持 “使用 Facebook 登录 Gaming 平台”。更多信息,请参见 Facebook 官方文档中的 技术实现 部分。
-
注册登录相关回调。
- Unity
- Unreal Engine
// Add callbacks
public void AddAuthObserver()
{
INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
}
// Remove callbacks
public void RemoveAuthObserver()
{
INTLAPI.RemoveAuthResultObserver(OnAuthResultEvent);
}
// Process the INTLAuthResult callback
public void OnAuthResultEvent(INTLAuthResult ret)
{
Debug.Log($"MethodID: {ret.MethodId}");
string methodTag = "";
if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_LOGIN)
{
methodTag = "Login";
}
else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_BIND)
{
methodTag = "Bind";
}
else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_AUTOLOGIN)
{
methodTag = "AutoLogin";
}
else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_QUERY_USER_INFO)
{
methodTag = "QueryUserInfo";
}
else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_GET_AUTH_RESULT)
{
methodTag = "GetAuthResult";
}
}C++ Event Handling (above v1.15)
//configure callback
FINTLAuthEvent authEvent;
authEvent.AddUObject(this, &OnAuthResult_Implementation);
UINTLSDKAPI::SetAuthResultObserver(authEvent);
// Remove callbacks
UINTLSDKAPI::GetAuthResultObserver().Clear();void OnAuthResult_Implementation(FINTLAuthResult ret)
{
UE_LOG(LogTemp, Warning, TEXT("MethodID: %d"), ret.MethodId);
}Unreal Event Handling
void OnAuthResult_Implementation(FINTLAuthResult ret)
{
UE_LOG(LogTemp, Warning, TEXT("MethodID: %d"), ret.MethodId);
} -
调用
AutoLogin
接口自动登录。- Unity
- Unreal Engine
INTLAPI.AutoLogin();
UINTLSDKAPI::AutoLogin();
-
在自动登录失败时调用
Login
接口使玩家手动登录。-
常规 Facebook Login
- Unity
- Unreal Engine
// taking Facebook as example
INTLAPI.Login(INTLChannel.Facebook);// taking Facebook as example
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelFacebook); -
使用 Facebook 登录 Gaming 平台
使用以下参数调用
Login
接口获取 Facebook 社交头像。更多信息,请参见 请求用户的头像。- Unity
- Unreal Engine
//在原来的 permissions 字符串里,添加一个 `gaming_user_picture` 权限,类似这样:`"email,public_profile,gaming_user_picture"`
public static void Login(string channel, string permissions = "gaming_profile,gaming_user_picture", string extraJson = "{}");//在原来的 permissions 字符串里,添加一个 `gaming_user_picture` 权限,类似这样:`"email,public_profile,gaming_user_picture"`
UFUNCTION(BlueprintCallable, Category = "INTLSDKAPI")
static bool Login(
const EINTLLoginChannel Channel,
const FString Permissions = "gaming_profile,gaming_user_picture",
const FString ExtraJson = "{}");
-
-
与游戏后台同步客户端身份验证状态,等待最终验证结果。
取消登录
在 Windows 平台,当使用系统浏览器登录三方渠道时,如果用户关闭登录屏幕,游戏将无法及时收到取消登录的消息。仅当登录超时时,游戏才会触发超时回调。
为解决上述问题,建议在使用系统浏览器登录时,在登录界面添加一个取消登录的按钮。用户可通过点击该按钮来主动取消登录操作。此时游戏需要调用 Player Network SDK 的 CancelLogin
接口,确保在用户主动取消登录时能够及时响应。
- Unity
- Unreal Engine
INTLAPI.CancelLogin(INTLChannel.Facebook);
UINTLSDKAPI::CancelLogin(EINTLLoginChannel::kChannelFacebook);
[可选] 设置 email 权限
要在 Facebook 登录时获取玩家邮箱需先设置对应权限,开启后将在 AuthResult
的 ChannelInfo
中返回 email
。
- 基于合规考虑,可针对特定来源对返回的
email
做 mask 处理,如有需求请联系 Player Network 助手打开。 - 可在后台流水日志中上报 hash 后的
base64(sha256(email))
,如有需求请联系 Player Network 助手打开。 - 可用于验证玩家信息或绑定列表是否包含
email
信息,如有需求请联系 Player Network 助手打开。
-
在 Meta for Developers 配置 email 权限。email 权限需要有 高级访问级别,才能让所有应用都能获取到玩家的 email。
-
调用 Login 接口时,需要在
permissions
参数中添加email
权限。调用Login
接口时如果permissions
参数没有传入或者为空时,Player Network SDK 将会加上email
权限。 -
在 Player Network 控制台 开启 email 返回功能,将 return_email 设置为 YES,详细步骤请参见 第三方渠道配置。
步骤3:验收登录功能
在 Player Network SDK 日志中搜索关键字 "AuthResult" 确认渠道名称和 OpenID 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。
如果接入过程中遇到问题,请参见 常见问题。