2014-03-26 77 views
1

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

我想要做的是当我的应用用户喜欢(或不喜欢)新页面时从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) callback verification failed: Operation timed out after 6001 milliseconds with 0 bytes received

我已经验证了app_id,url和app_s ecret变量。 再一次,这在我的测试服务器上工作,但不在Heroku中。 我甚至尝试不使用Facebook API并进行卷曲调用,但我得到了同样的错误。

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

感谢

回答

2

你的服务器必须是从互联网访问,并能够处理的并发请求,因为Facebook同时发送验证请求。

+0

而Heroku不允许多个请求只有一个测功机,对吗? 谢谢! –

+1

一个动态只有一个虚拟服务器。你可以在服务器上运行尽可能多的实例) 这里是Procfile运行4个gunicorn实例的例子: “web:python manage.py collectstatic --noinput; gunicorn -w 4 someapp.wsgi” –