跳到主要内容

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

注意

INTLConfig.ini 里面不需要配置 Xbox Series X|S 账号信息,例如 XBOX_APPID

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