Facebook API - Тайм-аут подписки в обратном вызове
У меня действительно странная проблема в PHP с API Facebook. Весь этот код работает на моем тестовом сервере (виртуальный хостинг). Но когда я запускаю его на рабочем сервере (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. Я даже пытался не использовать API Facebook и не делать вызов cURL, но получил ту же ошибку.
Я думаю, что, может быть, это как-то связано с Героку, но я не смог найти никаких доказательств.
Спасибо
1 ответ
Ваш сервер должен быть доступен через Интернет и должен обрабатывать параллельные запросы, потому что Facebook отправляет запросы проверки одновременно.