Windows
本文旨在介绍如何设置 Garena 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 Garena 渠道登录。
前提条件
1. 设置 Garena 应用
请联系 Garena 团队来:
- 激活应用并获取 app ID 和其他相关信息。
- 在开发者平台配置 Garena 登录的回调 URL:
https://test-common-web.intlgame.com/jssdk/garenalogincallback.html
https://common-web.intlgame.com/jssdk/garenalogincallback.html
- (可选)开启
APP_PLATFORM_BIND
,启用 Garena 的平台账号绑定。
步骤1:为 Garena 登录配置 SDK
打开项目的 INTLConfig.ini 文件:
INTLConfig.ini
[INTL environment]
# WARNING: You should change this URL to the production environment when you release your game.
INTL_URL = https://intlsdk-new-test.iegg.garena.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
[Garena Channel Configurations]
GARENA_WEBVIEW_LOGIN_ENABLE = 1
- 将 Player Network SDK 鉴权域名设置为
INTL_URL = https://intlsdk-new-test.iegg.garena.com
(请联系 Garena 团队提供)。 - 将
{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
,以便在不加密或压缩输出的情况下输出控制台日志和日志文件。 - 设置
GARENA_WEBVIEW_LOGIN_ENABLE
的值。默认值为1
,表示 Windows 平台使用 WebView 登录。如果用户将该值设置为0
,Windows 平台将使用系统浏览器登录。
警告
如果 INTLConfig 中的 GARENA_WEBVIEW_LOGIN_ENABLE
设置为 1
,则需要集成 INTLWebView 插件,否则登录将无法成功。
步骤2:添加 Garena 登录
注册登录相关回调。
- 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
接口使玩家手动登录。注意Windows 支持传入子渠道,
ExtraJson
不传子渠道,会默认跳转到 Garena 官网登录,并支持所有 Garena 开发者后台配置的子渠道。
多端入参是不一样的,如下示例。- Unity
- Unreal Engine
INTLAPI.Login(INTLChannel.Garena, "", "{\"appendix\":\"platform=1\"}");// 登录 Garena - Garena (1)
INTLAPI.Login(INTLChannel.Garena, "", "{\"appendix\":\"platform=3\"}");// 登录 Garena - Facebook (3)
INTLAPI.Login(INTLChannel.Garena, "", "{\"appendix\":\"platform=8\"}");// 登录 Garena - Google (8)
INTLAPI.Login(INTLChannel.Garena, "", "{\"appendix\":\"platform=10\"}");// 登录 Garena - Apple (10)
INTLAPI.Login(INTLChannel.Garena, "", "{\"appendix\":\"all_platforms=1\"}");// 登录 Garena - 所有平台
INTLAPI.Login(INTLChannel.Garena, "", "");// 登录 Garena - 所有平台UINTLSDKAPI::Login(EINTLLoginChannel::kChannelGarena, "", "{\"appendix\":\"platform=1\"}");// 登录 Garena - Garena (1)
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelGarena, "", "{\"appendix\":\"platform=3\"}");// 登录 Garena - Facebook (3)
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelGarena, "", "{\"appendix\":\"platform=8\"}");// 登录 Garena - Google (8)
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelGarena, "", "{\"appendix\":\"platform=10\"}");// 登录 Garena - Apple (10)
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelGarena, "", "{\"appendix\":\"all_platforms=1\"}");// 登录 Garena - 所有平台
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelGarena, "", "");// 登录 Garena - 所有平台Garena 登录
permission
参数与其他渠道不同。用户需要输入字符串格式的数字。例如,"2" 或 "4"。权限定义如下:与游戏后台同步客户端身份验证状态,等待最终验证结果。
步骤3:验收登录功能
在 Player Network SDK 日志中搜索关键字 "AuthResult" 确认渠道名称和 OpenID 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。
如果接入过程中遇到问题,请参见 常见问题。