Я использую обновления в режиме реального времени для тега, чтобы получать уведомления, когда кто-то помечает медиа с определенным тегом. Подписка работает нормально, и я могу проверить подписку напрямую, используя
https://api.instagram.com/v1/subscriptions?client_secret={ЦЛ}&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. Так, например, если я подписываюсь на тег «winter» и если кто-то публикует мультимедиа и помечает его с помощью этого тега, instagram дважды отправляет уведомление в файл обратного вызова, указанный во время подписки (оба вызова выполняются в течение нескольких секунд). Зачем instagram отправлять запрос дважды на обратный звонок? У кого-нибудь была похожая проблема?
После отладки и расследования я обнаружил, что вызов отправляется из Instagram дважды, если файл обратного вызова не выполняется достаточно быстро.
На основе документация:
Кроме того, вы должны подтвердить POST в течение 2 секунд тайм-аута — если
вам нужно больше обрабатывать полученную информацию, вы можете сделать
так в асинхронной задаче.
Они отправят второй запрос, если не получат ответ на первый запрос в течение 2 секунд.
В конце у меня был пустой файл callback.php, внутри которого был только «сон», и каждый раз он вызывался дважды.
Других решений пока нет …