【问题标题】:Facebook API - Subscriptions Timeout in callbackFacebook API - 回调中的订阅超时
【发布时间】:2014-05-04 03:28:39
【问题描述】:

我在使用 Facebook API 的 PHP 中遇到了一个非常奇怪的问题。所有这些代码都在我的测试服务器(共享主机)中运行。但是当我在生产服务器(Heroku)中运行它时,我得到了一个错误。

我要做的是在我的应用用户喜欢(或不喜欢)新页面时从 Facebook 接收实时更新。 这是 Facebook 提供的文档:https://developers.facebook.com/docs/graph-api/real-time-updates

我要订阅的代码:

 $facebook = new Facebook(array(
            'appId' => $app_id,
            'secret' => $app_secret,
            'cookie' => true
        ));
  $facebook->api(
                "/" . $app_id . "/subscriptions", "POST", array(
            'object' => 'user',
            'callback_url' => 'http://' . $url . '/rtu/callback',
            'fields' => 'likes',
            'verify_token' => $rtu_verify_token,
            'access_token' => $app_id . "|" . $app_secret
                )
        );

我在回调中的代码:

 if (isset($_GET['hub_verify_token']) && isset($_GET['hub_challenge'])) { 
            $rtu_verify_token = Config::get('variables.rtu_verify_token');
            if (($_GET['hub_verify_token'] == $rtu_verify_token)) {
                echo $_GET['hub_challenge'];
                die();
            }
        }

        $data = file_get_contents("php://input");

        $json = json_decode($data);

错误:

FacebookApiException (#2200) 回调验证失败:操作 6001 毫秒后超时,收到 0 个字节

我已经验证了 app_id、url 和 app_secret 变量。 同样,这适用于我的测试服务器,但不适用于 Heroku。 我什至尝试不使用 Facebook API 并进行 cURL 调用,但我得到了同样的错误。

我认为这可能与 Heroku 有关,但我找不到任何证据。

谢谢

【问题讨论】:

    标签: php facebook subscriptions real-time-updates


    【解决方案1】:

    您的服务器必须可以从 Internet 访问,并且能够处理并发请求,因为 facebook 会同时发送验证请求。

    【讨论】:

    • 而且 Heroku 不允许只有一个测功机的多个请求,对吗?谢谢!
    • 一个测功机它只是一个虚拟服务器。在服务器上,您可以运行任意数量的实例)这是运行 4 个 gunicorn 实例的 Procfile 示例:“web: python manage.py collectstatic --noinput; gunicorn -w 4 someapp.wsgi”
    猜你喜欢
    • 2014-05-03
    • 2015-11-22
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    相关资源
    最近更新 更多