Тег обновлений Instagram в реальном времени — обратный вызов вызывается дважды?

Я использую обновления Instagram в реальном времени для тега, чтобы получать уведомления, когда кто-то помечает медиа с определенным тегом. Подписка работает нормально, и я могу проверить подписку напрямую, используя https://api.instagram.com/v1/subscriptions?client_secret={cs}&client_id={cid}

В обратном вызове у меня есть что-то вроде

if (isset ($_GET['hub_challenge'])){
    echo $_GET['hub_challenge'];
}
else{
    $my_string = file_get_contents('php://input');
    $sub_update = json_decode($my_string);
    //do the rest of the things with data we fetched
}

}

Но этот обратный вызов выполняется дважды со стороны Instagram. Так, например, если я подпишусь на «зимний» тег, и если кто-то опубликует медиафайл и пометит его с помощью этого тега, Instagram дважды отправит уведомление в файл обратного вызова, который я указал во время подписки (оба вызова выполняются в течение нескольких секунд). Почему инстаграм дважды отправляет запрос на обратный вызов? У кого-нибудь была похожая проблема?


person cool    schedule 09.12.2014    source источник


Ответы (1)


После отладки и расследования я обнаружил, что вызов из instagram отправляется дважды, если файл обратного вызова выполняется недостаточно быстро.

На основе документации:

Кроме того, вы должны подтвердить POST в течение 2-секундного тайм-аута — если вам нужно выполнить дополнительную обработку полученной информации, вы можете сделать это в асинхронной задаче.

Они отправят второй запрос, если не получат ответ на первый запрос в течение 2 секунд.

В конце концов, у меня был пустой файл callback.php, внутри которого был только «сон», и каждый раз он вызывался дважды.

person cool    schedule 10.12.2014
comment
Предоставив эту цитату, вы, вероятно, спасли мой день. В текущей версии документов он отсутствует, и непонятно, почему уведомления отправляются дважды. Собираюсь проверить. - person Andreyco; 21.03.2016