鉴权接口
本文列出了 Player Network 登录鉴权服务支持的典型接口及其使用指南。
自动登录
开发人员可以通过调用 AutoLogin
接口来实现玩家自动登录。此接口使用本地缓存中存储的有效登录态,通过将此登录态验和后台信息比对证玩家身份。如果本地缓存中没有登录态,或者后台无法验证登录态,自动登录失败。在自动登录失败的情况下,开发人员需要调用 Login
接口使玩家手动登录。
- Unity
- Unreal Engine
INTLAPI.AutoLogin();
UINTLSDKAPI::AutoLogin();
手动登录
开发人员可以调用 Login
接口打开第三方渠道页面,要求玩家输入身份信息手动登录。调用此接口时需传递包括登录渠道、登录渠道要求的权限以及登录渠道要求的任何其他信息作为入参参数。关于各个登录渠道要求的权限及额外参数信息,请参考各个登录渠道的接入指引。
下面的示例代码以 Facebook 为例。
- Unity
- Unreal Engine
INTLAPI.Login(INTLChannel.Facebook);
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelFacebook);
绑定账号
Player Network 的绑定接口可以将不同登录渠道的唯一标识符(UID)绑定一个唯一的 Player Network SDK OpenID,方便玩家绑定不同的账号(例如 Facebook、Google、Twitter 和游客账号等),并在这些账号之间共享游戏进度。
要绑定账号,玩家需首先成功登录游戏。然后,开发人员需调用 Bind
接口打开第三方渠道的登录页面。此接口的入参参数包括玩家想要绑定的登录渠道的渠道定义、此登录渠道需求的权限以及此登录渠道指定的额外信息。关于每个登录渠道需求的权限及额外信息,请参考各渠道的接入指引。
如果登录成功,第三方渠道后台将返回 UID,供 Player Network 绑定到 OpenID,从而将账号绑定到当前登录的渠道账号。如果返回的 UID 无法绑定 OpenID,Player Network 后台将返回错误代码。此错误代码可能表示返回的 UID 已经绑定了 OpenID,或已有同渠道的另一个 UID 绑定到此 OpenID。同一渠道下只有一个 UID 可以绑定到同一个 OpenID。例如,一个 OpenID 不能同时绑定两个不同的 Facebook UIDs。
如果在调用 Bind
方法时,当前的登录渠道是游客账号,则此游客账号可以绑定入参传递的任意其他登录渠道。然而,如果调用 Bind
接口时玩家登录的不是游客账号,则此账号仅可以绑定其他非游客账号的登录渠道,不可绑定游客渠道。
下面的示例代码以 Facebook 为例。
- Unity
- Unreal Engine
INTLAPI.Bind(INTLChannel.Facebook);
UINTLSDKAPI::Bind(EINTLLoginChannel::kChannelFacebook);
解绑账号
开发人员可以将 OpenID 和登录渠道解绑。成功解绑后,玩家将无法再使用未绑定的账号登录游戏。玩家下次尝试使用未绑定的账号登录时,将生成一个新的 OpenID。
要解绑玩家账号,开发者需要调用 Unbind
接口,并传递包括需要解绑的渠道 ID 及两个可选参数作为接口入参,即解绑渠道的 UID 和解绑渠道需要的其他数据。
下面的示例代码以 Facebook 为例。
- Unity
- Unreal Engine
INTLAPI.Unbind(4); //Unlink the Facebook channel
UINTLSDKAPI::Unbind(EINTLLoginChannel::kChannelFacebook); //Unlink the Facebook channel
登出游戏
开发人员可通过调用 Logout
接口为玩家提供从其当前登录渠道登出游戏的选项。此接口不需要任何入参就能将玩家从当前登录渠道中登出。
- Unity
- Unreal Engine
INTLAPI.Logout();
UINTLSDKAPI::Logout();
引继游客账号
Player Network 允许游客账号使用引继码从一个设备转移到另一个设备而不丢失任何游戏数据。例如,玩家在设备 A 上使用 OpenID A 登录游戏,设置游戏账号密码并生成引继码。
- Unity
- Unreal Engine
INTLAPI.GenerateTransferCode("password");
UINTLSDKAPI::GenerateTransferCode("password");
然后,在设备 B 上输入密码和引继码。这样,他们就能在设备 B 上登录游戏,从而有效地转移了游客账号。现在,设备 B 上的游戏账号已与 OpenID A 绑定,表明引继成功。
- Unity
- Unreal Engine
INTLAPI.TransferAccount("transferCode","password");
UINTLSDKAPI::TransferAccount("transferCode","password");