Skip to main content
Steamworks 与 XBOX Game Development Kit(GDK)都提供了用于对用户进行身份验证、并验证他们是否拥有当前作品和/或尝试访问的附加内容的 API。但这些 API 的目标存在差异。 Steam API 用于在多人会话中验证用户身份,并通过所有权检查确认用户玩的是通过 Steam 商店获得的合法游戏副本。而 XBOX Game Development Kit(GDK)需要先让用户登录,这一步会隐式在 XBOX 服务中验证用户身份,并独立检查当前 Microsoft Store 账号是否有权访问该游戏。 在 XBOX Game Development Kit(GDK)中,用于身份验证与所有权检查的两个 API 面向不同平台,有时甚至面向完全不同的账号。因此,我们使用 有资格 一词来表示用户持有 Microsoft Store 颁发的、可玩当前游戏的有效许可证。有关这一点及其含义的更多信息,参见本主题稍后的“两平台之间的许可差异”一节。

用户身份验证

在 Steam 中,客户端启动游戏时用户总是“已登录”。除了初始化 API 之外,游戏无需其他操作就能访问用户的 Steam ID。Steam 中的身份验证指的是使用 ISteamUser API 通过 session ticket(点对点或专用服务器)、加密应用票据(经安全服务器)或 Steam Web API,验证用户预设的身份就是当前登录客户端并启动游戏的用户。身份验证之后,Steam Web 或 ISteamUser API 可使用票据验证当前游戏或其可下载内容(DLC)的所有权。 在 XBOX Game Development Kit(GDK)中,这一验证步骤并不必要,因为在你按照 初始化 XBOX Game Development Kit(GDK) 中的步骤为用户登录时,验证已经完成了。因此,XBOX Game Development Kit(GDK)并没有与 Steam 的 session ticket 或加密应用票据相对应的机制来在多人会话中验证用户身份。

所有权与数字版权管理(DRM)

要验证用户是否有资格玩当前游戏,你需要使用 XStore API 中的 XStoreQueryGameLicenseAsync 函数,检查用户是否拥有玩该游戏的许可证。在异步回调中检查:
  1. 查询是否成功(即用户有许可证)。
  2. XStoreQueryGameLicenseResult 获得的许可证是否仍处于活动状态。
如果两项检查都通过,你可以认为用户有资格玩你的游戏。在 XBOX Game Development Kit(GDK)中,这最接近于在 Steam Web API 中使用 ISteamUser/CheckAppOwnership,或调用带 app ticket 的 SteamEncryptedAppTicket::BIsTicketForApp 有关执行这一检查的更多信息与代码示例,参见 XStore: 基础 DRM 与许可证检查。该主题还介绍了更稳健的许可证检查方案,以防止通过篡改绕过客户端检查。 Steam 还提供了 DRM 包装器,XBOX Game Development Kit(GDK)没有对应机制。Microsoft Store 会在启动从其安装的应用时进行反盗版检查。为获得完整的 DRM 保护,我们建议在运行上述链接示例代码中的许可证检查之外,还额外采用第三方方案。

检查 DLC 的所有权

如果你的游戏关联了 DLC,可以使用 XStore API 检查用户的 Microsoft Store 账号是否有权访问某个条目。要检查这些许可证,首先使用 XStoreQueryAssociatedProductsAsync 函数查询与游戏关联的所有产品,然后使用 XStoreAcquireLicenseForPackageAsync 函数(类似于 ISteamUser/CheckAppOwnershipISteamUser::UserHasLicenseForApp)获取查询结果列表中特定 DLC 条目的许可证。 与游戏使用权检查一样,你需要检查许可证是否成功获取且处于活动状态。两项检查都通过时,你可以认为用户被授权访问该 DLC 条目。有关此流程的代码示例,参见 管理并授权可选包(DLC)

两平台之间的许可差异

请注意 Steam 与 Microsoft Store 在理念上的重要区别。在 Steam 中,许可证检查用于验证经身份验证的用户是否因为购买或通过 Steam Family Sharing 获得了当前游戏的许可证。 而 XBOX Game Development Kit(GDK)会检查当前经身份验证的 Microsoft Store 账号是否有权访问内容,并通过 XBOX 账号获取身份。这里有一个重要的注意点 —— 两个账号所使用的 Microsoft 账号 可能不相同,即使它们属于同一个人。因此,如果你希望限制某个游戏或其他 Microsoft Store 内容的许可证可以在多少台不同设备上玩,请务必熟悉 Microsoft Store 提供的不同许可模型。更多信息参见 游戏的产品共享模型
最后修改于 2026年8月24日