2

我正在尝试创建一个利用 Steam Web api 的 Web 应用程序,总的来说,我基本上对如何启动这个应用程序感到非常困惑。这个问题基本上概述了我的问题,我不知道如何创建端点并解决这个问题。

目前我的网络服务器有 Apache Tomcat,我正在用 Notepad++ 编写所有的 html/css/javascript 代码。我不想使用 jQuery,因为我不知道是否需要。现在我想做的就是从 Steam 的 API 中获取数据。

例如,使用这个 api:

http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&steamid=76561197960435530&relationship=friend

我只想获取用户的好友列表。问题是,正如我在上面链接的问题中一样,我无法从自己的站点调用 Steam api,而且我不知道如何在我的服务器上创建端点并解决此问题。

任何帮助是极大的赞赏。我对所有这一切都是新手,这肯定会令人困惑。

4

2 回答 2

1

您可以使用 mod_proxy 将来自服务器的请求代理到 Steam 站点。首先需要在 Apache 中启用 rewrite 和 mod 代理

a2enmod rewrite
a2enmod proxy
apache2ctl reload

让我们假设您的站点是www.example.com并且 Web 根目录/var/www在您的服务器上。创建一个目录/var/www/steamapi。在此目录中创建一个文件.htaccess,名称如下

RewriteEngine On
RewriteRule ^(.*)$ http://api.steampowered.com/$1 [P]

[P] 告诉 Apache 代理请求。现在不要向 api.steampower.com 发出请求,而是在您的 XHR/AJAX url 参数中使用下面的绝对 url

/steamapi/ISteamUser/GetFriendList/v0001/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&steamid=76561197960435530&relationship=friend

Apache 会将请求重写为下面的 URI,并将结果代理回给您。您的浏览器不会抱怨,因为您正在向同一个域发出请求。

http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&steamid=76561197960435530&relationship=friend
于 2014-08-25T19:43:54.867 回答
0

据我所知,对于 Steam 的公共 API,他们不应该像上面的答案所暗示的那样需要代理来执行 AJAX 请求(这是我假设你正在做的),因为它们肯定必须实现 CORS。除此之外,这仅仅是一个浏览器限制,不应该影响任何服务器端。

达斯汀试图解释如何解决的限制是向与您请求的域不同的域上的站点发出 AJAX 请求,该域不允许 CORS(跨源资源共享)。因此,网站会将数据发送到设置为代表其发出请求并返回数据的代理服务器。

您能否详细说明尝试提出请求时遇到的错误类型?

我假设您正在使用此处找到的 API, https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_.28v0001.29

在这种情况下,我不得不问,如果您看到所有 X 都在哪里,这些是该 URI 中的占位符。您应该有一个 Steam Web API 密钥,而不是 Xs,您可以从这里注册:

https://steamcommunity.com/dev/apikey

我不确定在注册时域名是否那么重要,因为我之前已经改变了密钥的用途。

请注意,Valve 的公共 API 非常有限,并且在网络上流传的许多库不使用它们,而是将 Valve 的 Oauth 登录代码逆向工程以供其主站点使用私人的、未记录的网络 API,或者他们有以某种方式对桌面客户端本身进行了逆向工程。

于 2014-09-17T09:52:48.853 回答