Skip to main content

Xbox Series X|S 和 WinGDK

note

WinGDK平台,仅支持xbox账号登录,登录和鉴权方式与XSX是一样的,配置步骤也是一致的。

本文旨在介绍如何设置 Xbox Series X|S 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 Xbox Series X|S 渠道登录。

note

Xbox Series X|S 的开发一般不面向个人开发者,需要通过公司的商务联系 Microsoft 开通 Xbox Series X|S 开发权限。

前提条件​

  1. 注册 Xbox Game Dev 账号,并参考 官方 Microsoft Learn 文档 中的步骤来设置游戏。
  2. 获取 Player Network 控制台登录账号。
  3. 为游戏创建新项目,或加入已有项目。
  4. 下载 SDK。
5. 接入 SDK

请参见相应的文档为您的游戏 接入 SDK。

对于 Player Network SDK V1.23.00 ~ V1.24.00,还需添加以下内容:

  1. 进入引擎源码:Engine\Platforms\XSX\Source\Programs\UnrealBuildTool\UEBuildXSX.cs
  2. 在 SetUpEnvironment() 方法中添加下面两个系统库
    LinkEnvironment.SystemLibraries.Add("advapi32.lib");
    LinkEnvironment.SystemLibraries.Add("oldnames.lib");
  3. 重编 UnrealBuildTools
  1. 在 Player Network 控制台添加 Xbox Series X|S 为业务的登录鉴权方式。

步骤1:添加 Xbox Series X|S 登录​

note

Xbox 平台推荐开发者采用 PXUID(Partner Xbox User ID)作为玩家账号体系的核心标识符。

PXUID 是专为现代跨平台游戏和应用程序设计的下一代用户标识系统,相比传统的 xuid 提供了更好的隐私保护、更优的跨平台兼容性以及更强的长期稳定性。
这一选择能够确保您的应用或游戏在未来 Xbox 生态发展中保持兼容性,同时为玩家提供更安全无缝的跨平台体验。

在 INTLConfig.ini 文件中配置 INTL_XSX_PR_URL 字段。

INTL_XSX_PR_URL = https://demo.intlgame.com // XSX 平台使用 PXUID 鉴权登录需要配置的域名
  1. 注册登录相关回调。
// Add callbacks
public void AddAuthObserver()
{
INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
}

// Remove callbacks
public void RemoveAuthObserver()
{
INTLAPI.RemoveAuthResultObserver(OnAuthResultEvent);
}

// Process the INTLAuthResult callback
public void OnAuthResultEvent(INTLAuthResult AuthResult)
{
Debug.Log($"MethodID: {AuthResult.MethodId}");

string methodTag = "";
switch (AuthResult.MethodId)
{
case (int)INTLMethodID.INTL_AUTH_LOGIN:
methodTag = "Login";
break;
case (int)INTLMethodID.INTL_AUTH_BIND:
methodTag = "Bind";
break;
case (int)INTLMethodID.INTL_AUTH_AUTOLOGIN:
methodTag = "AutoLogin";
break;
case (int)INTLMethodID.INTL_AUTH_QUERY_USER_INFO:
methodTag = "QueryUserInfo";
break;
case (int)INTLMethodID.INTL_AUTH_GET_AUTH_RESULT:
methodTag = "GetAuthResult";
break;
}
}
  1. 调用 AutoLogin 接口自动登录。
INTLAPI.AutoLogin();
  1. 在自动登录失败时调用 Login 接口使玩家手动登录。
INTLAPI.Login(INTLChannel.Xbox);
  1. 与游戏后台同步客户端身份验证状态,等待最终验证结果。

获取 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 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。