Steamworks 文献库
OAuth
OAuth 允许合作伙伴站点和嵌入式平台上的应用程序以安全的方式为经过验证的 Steam 用户执行某些操作。

要使用 OAuth,您首先需要从 Valve 处获取客户端 ID。 参见入门指南,了解更多详情。

一些 OAuth API 需要使用 WebAPI 发行商密钥,以验证您的身份是 Steam 合作伙伴。 这些 API 可以仅从您的服务器调用,因为密钥无法与客户端共享。 如果有 key 参数,即表明此类 API 的存在。

带有依靠 OAuth 启用的方法的 WebAPI 服务包括:
ICloudServiceIBroadcastServiceIGameNotificationsServiceIPlayerServiceIPublishedFileService

为了方便举例说明,将使用 http://redirect/uri/here 来代表重定向 URI。

入门指南


Steam 上的实现是基于 OAuth 2.0 完成的。
在您初始设置期间,将需要联系 Valve,并提供以下信息:
  • 您需要用户获取何种权限。 所需的权限在下方随每个 API 调用列出。 请注意,如果您不打算支持跨平台云同步或创意工坊,我们将不会为您提供客户端 ID。
  • 令牌时限
  • 在完成验证/授权后让用户返回的重定向 URI。
Valve 则会为您的实现分配一个 客户端 ID

要验证用户,请将该用户重定向至

https://steamcommunity.com/oauth/login?response_type=token&client_id=client_id_here&state=whatever_you_want

对于内嵌式浏览器,建议将 mobileminimal=1 添加至上述请求,因为它会移除某些 Steam 站点导航 UI,当 OAuth 页面于游戏内直接向用户显示时,不需要这些 UI。

如果您纳入状态参数,它将在用户确认或拒绝访问权限后被传回至重定向 URI。 请注意,授权码模式类型也受支持,只需在登录时使用 response_type=code 即可。

如果用户授予访问权限,则会被重定向至您,具体地址为:

http://redirect/uri/here#access_token=token_here&token_type=steam&state=whatever_you_want

令牌应该被当作不透明字符串对待。 目前令牌为 32 个字符的十六进制字符串,但随时可能会改变。 该 API 还包含一个已启用的 steamid 参数,必须忽略。 请查看下文的获取用户的 SteamID,了解如何安全获取用户的 SteamID。

如果用户拒绝访问权限,则会被重定向至您,具体地址为:

http://redirect/uri/here#error=access_denied&state=whatever_you_want

请注意,响应(包括令牌)在 URI 片段中提供,因此,如果您需要发出服务器端的请求,响应需要从客户端访问并传回至您的服务器。

您获得了用户的令牌之后,就可以按照下方指示开始 API 请求。
除非下方有所明示,否则请求应该为 HTTP POST 请求,采用表格数据形式,并应设置此标头:

Content-Type: application/x-www-form-urlencoded

获取用户的 SteamID

在您获得用户的 OAuth 令牌后,您可以进行服务器对服务器的调用,以安全获取与令牌关联的用户的 SteamID,方法是调用:

https://api.steampowered.com/ISteamUserOAuth/GetTokenDetails/v1/?access_token=token

访问 Steam 云


要为用户访问 Steam 云,您的 OAuth 客户端将需要 read_cloud 和/或 write_cloud 权限。
这些权限的范围由 AppId 指定,因此请确保明确列出所有在创建客户端 ID 时应该被纳入的 AppId。

您获得 OAuth 令牌后,请使用 ICloudService Steam WebAPI。

访问 Steam 创意工坊


要为用户访问 Steam 创意工坊,您的 OAuth 客户端将需要 read_cloud 和/或 write_cloud 权限。
这些权限的范围由 AppId 指定,因此请确保明确列出所有在创建客户端 ID 时应该被纳入的 AppId。

您获得 OAuth 令牌后,请使用 IPublishedFileService Steam WebAPI。