跳到主要内容

XSX 和 WinGDK

注意

WinGDK平台,仅支持xbox账号登录,登录和鉴权方式与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 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。