XSX
本文旨在介绍如何设置 Xbox Series X|S 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 Xbox Series X|S 渠道登录。
注意
Xbox Series X|S 的开发一般不面向个人开发者,需要通过公司的商务联系 Microsoft 开通 Xbox Series X|S 开发权限。
前提条件
- 注册 Xbox Game Dev 账号,并参考 官方 Microsoft Learn 文档 中的步骤来设置游戏。
- 获取 Player Network 控制台登录账号。
- 为游戏创建新项目,或加入已有项目。
- 下载 SDK。
5. 接入 SDK
请参见相应的文档为您的游戏 接入 SDK。
对于 Player Network SDK V1.23.00 ~ V1.24.00,还需添加以下内容:
- 进入引擎源码:
Engine\Platforms\XSX\Source\Programs\UnrealBuildTool\UEBuildXSX.cs
- 在
SetUpEnvironment()
方法中添加下面两个系统库LinkEnvironment.SystemLibraries.Add("advapi32.lib");
LinkEnvironment.SystemLibraries.Add("oldnames.lib"); - 重编
UnrealBuildTools
步骤1:添加 Xbox Series X|S 登录
注意
INTLConfig.ini
里面不需要配置 Xbox Series X|S 账号信息,例如 XBOX_APPID
。
注册登录相关回调。
- 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
接口使玩家手动登录。- Unity
- Unreal Engine
INTLAPI.Login(INTLChannel.Xbox);
UINTLSDKAPI::Login(EINTLLoginChannel::kChannelXbox);
与游戏后台同步客户端身份验证状态,等待最终验证结果。
获取 Xbox 体系内的用户 ID
成功登录后,Unity 的 INTLAuthResult 和 UE 的 FINTLAuthResult 数据结构中包含 ChannelInfo
会有提供 userId
。
"{\"code\":\"v3.xxxx\",\"issuerId\":1,\"userId\":281xxxxxx,\"map_info\":{\"sacc_uid\":\"569xxxxxxxx\",\"sacc_token\":\"3RYxxx==\",\"sacc_account_plat_type\":25},\"access_token\":\"d601xxxx-xxxx-xxxx-xxxx-3b57xxxxxxxx\",\"uid\":\"457xxxxxxxxxxxxxxxx\",\"expire_ts\":163xxxxxxx,\"refresh_token\":\"7470xxxx-xxxx-xxxx-xxxx-e488xxxxxxxx\"}"
步骤2: 验收登录功能
在 Player Network SDK 日志中搜索关键字 "AuthResult" 确认渠道名称和 OpenID 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。