跳到主要内容

配置 Garena 登录

Player Network 为 Garena 登录分配的渠道 ID 是 10,渠道定义在 Unity 引擎为 INTLChannel.Garena 而在 Unreal Engine 为 EINTLLoginChannel::kChannelGarena。Player Network 在以下平台上支持 Garena 登录:

Garena SDK 集成了许多第三方 SDK,包括许多登录 SDK。这些登录渠道在 Player Network SDK 中作为 Garena 的子渠道提供。

在 Player Network SDK 1.16 版之后,Player Network SDK 将根据 INTLConfig.ini INTL_URL属性切换 Garena 环境。当 Player Network SDK 处于 test/dev/debug 环境时,Garena 将处于测试环境;当 Player Network SDK 处于其他环境时,Garena 将处于正式环境。

目前,Player Network SDK 支持登录的 Garena 子渠道包括:

  • Android:GuestGarenaFacebookGoogle
  • iOS:GuestGarenaFacebookAppleGoogle
  • Windows:GarenaFacebookGoogleApple

绑定

根据当前登录的 Garena 账号的子渠道,可分为两种绑定方式:游客绑定和平台账号绑定。

  1. 游客绑定
    通过 Garena 的游客子渠道登录后,游客账号可以绑定到其他 Garena 子渠道。

  2. 平台账号绑定
    通过 Garena 的非游客子渠道登录后,可将登录账号作为主账号绑定其他子渠道账号。绑定前,请调用 Request Platform Binding Info 查看可供绑定的平台。
    与主账号绑定的账号是辅助账号。绑定后,如果用户使用辅助账号登录,Garena 将返回其绑定的主账号的 uidtoken

重置 Garena 游客

绑定 Garena 游客账号成功后,游戏需要调用接口重置 Garena 游客账号的数据。

如果绑定成功后未重置游客账号,游客账号登录将返回 2203/1204(iOS)或 2019(Android)错误代码,导致游客账号登录失败。

代码示例

// Add callback
public void AddAuthObserver()
{
INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
INTLAPI.AddExtendResultObserver(OnExtendEvent);
}

// Remove Callback
public void RemoveAuthObserver()
{
INTLAPI.RemoveAuthResultObserver(OnAuthResultEvent);
INTLAPI.RemoveExtendResultObserver(OnExtendEvent);
}

public void OnAuthResultEvent(INTLAuthResult ret)
{
if (ret.MethodId == (int)INTLMethodID.INTL_AUTH_BIND)
{
if(ret.Channel.Equals(INTLChannel.Garena) && ret.RetCode == INTLErrorCode.SUCCESS)
{
// In the AuthResult callback, invoke resetGuest straightaway if the method is bind, the channel is Garena and the return code is success
INTLAPI.ExtendInvoke(INTLChannel.Garena, "resetGuest", "");
}
}
}

public void OnExtendEvent(INTLExtendResult ret)
{
// Extend callback
}

申请平台绑定信息

调用 RequestPlatformBindingInfo 后,bounded_accountsavailable_platforms 将在 ExtendResult 的 ret_msg 字段中以 JSON 字符串形式返回。JSON 字符串的结构如下:

{
"bounded_accounts": [
{
"platform": "Apple",
"create_time": 1627893394,
"uid": 133604802,
"user_info": {
"nickname": "intl",
"gender": 0,
"icon": "http://image.png"
}
}
],
"available_platforms": [
"Garena"
],
"primary_platform": "Apple"
}

性别的可能值:0 = 未知,1 = 男性,2 = 女性。

平台账号绑定前,请使用此方法检查 available_platforms,并将平台名称作为绑定的子渠道。

代码示例

// invoke function
INTLAPI.ExtendInvoke(INTLChannel.Garena, "requestPlatformBindingInfo", "");

public void OnExtendEvent(INTLExtendResult ret)
{
// callback
}