跳到主要内容

XSX

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

注意

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 登录

注意

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 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";
    }
    }
  2. 调用 AutoLogin 接口自动登录。

    INTLAPI.AutoLogin();
  3. 在自动登录失败时调用 Login 接口使玩家手动登录。

    INTLAPI.Login(INTLChannel.Xbox);
  4. 与游戏后台同步客户端身份验证状态,等待最终验证结果。

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