2014-03-26 71 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」 –