【问题标题】:Steam as OpenID stopped working when I changed server当我更改服务器时,Steam 作为 OpenID 停止工作
【发布时间】:2013-07-13 18:27:19
【问题描述】:

我做了一个使用 Steam 作为 OpenID 提供者的网站。我首先将它托管在共享主机上。

但是流量从一天的 50 个用户增长到一天的 1000 个。我没想到这一点,不得不改变我的主人。我使用了另一个性能更好的共享主机等,看看它会如何发展。但是现在有一个问题。

我在 Steam 上的 OpenID 登录在最后一台主机上运行良好,但现在无法正常运行了。我用谷歌试过,它奏效了。所以我认为我的脚本没有使用新主机上未启用的功能。

所以当我输入 Steam 身份时,它会在大约 30 秒内加载,然后 Chrome 会返回一个错误 ERR_EMPTY_RESPONSE。我尝试激活 error_reporting E_ALL,但它的作用相同。

我正在使用 LightOpenID,这里是被指控的代码部分:

    $openid->identity = 'http://steamcommunity.com/openid';
    header('Location: ' . $openid->authUrl());

实际上,每当我调用 $openid->authUrl() 时,它都不起作用。以下是完整代码:http://pastebin.com/rChDzECq

我该如何解决这个问题?先感谢您。

【问题讨论】:

  • 你解决了这个@tib20 吗?我能够登录到您的域(列在 pastebin 中)。
  • 最终我发现是 Steam 拒绝了来自我服务器的 Web 请求。所以我在朋友的服务器上使用了一个小脚本,它为我获取了我需要的数据。我通过根本不调用 Steam 解决了 OpenID(登录后它已经返回了我需要的内容),但问题在于获取用户的信息。
  • 有趣的是,我朋友的托管服务和我一样。但由于它是一个共享主机,而且我知道我共享一个在俄罗斯由于另一个站点上的非法内容而被阻止的 IP,Steam 可能会阻止我们,因为他们阻止了我们的 IP。谢谢!你让我想到了! :D

标签: php openid steam


【解决方案1】:

在过去的几个小时里,我也遇到了与 LightOpenID 代码作斗争的问题。我终于成功了,这就是我在这个过程中学到的东西。

  1. header() 命令之前绝对没有 HTML 输出。即使是最小的空间也会阻止命令重定向任何内容。

  2. 我的服务器不允许使用file_get_contents(),只是从传递给它的 URL 中返回了 404 错误。您可以使用自定义file_get_contents_curl() 命令解决此问题。这是我自己使用的:

    function file_get_contents_curl($url) {
        $ch = curl_init();
    
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
    
        $data = curl_exec($ch);
        curl_close($ch);
    
        return $data;
    }
    

我知道这是一个迟到的答案,但我希望它会对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-16
    • 2023-03-07
    • 2017-05-26
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    相关资源
    最近更新 更多