2014-03-26 2 views
1

Facebook API를 사용하여 PHP에서 정말 이상한 문제가 있습니다. 이 모든 코드는 테스트 서버 (공유 호스팅)에서 작동합니다. 하지만 프로덕션 서버 (Heroku)에서 실행하면 오류가 발생합니다.Facebook API - 가입 콜백의 시간 초과

내가하려는 것은 내 앱 사용자가 새 페이지를 좋아하거나 좋아지지 않을 때 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

I 이것은 페이스 북이 제공하는 문서입니다 이미 app_id, url 및 app_s를 확인했습니다. ecret 변수. 다시, 이것은 내 테스트 서버에서 작동하지만 Heroku에서는 작동하지 않습니다. 페이스 북 API를 사용하지 않고 cURL 호출을 시도했지만 심지어 같은 오류가 발생했습니다.

아마 헤로 쿠와 관련이 있다고 생각하지만 증거를 찾을 수 없습니다. 페이스 북을 동시에 검증 요청을 전송하기 때문에

감사

답변

2

당신의 서버는 인터넷에서 접근 할 수 있으며, 동시 요청을 처리 할 수 ​​있어야합니다.

+0

그리고 Heroku는 하나의 dyno만으로 여러 요청을 허용하지 않습니다. 맞습니까? 감사합니다. –

+1

하나의 가상 서버는 하나의 가상 서버입니다. 서버에서 당신은 원하는만큼의 인스턴스를 실행할 수 있습니다. 다음은 4 가지 인스턴스의 gunicorn을 실행하는 Procfile의 예입니다 : "web : python manage.py collectstatic --noinput; gunicorn -w 4 someapp.wsgi" –