API реального времени Instagram - получение пустых данных и отсутствие POST-запроса в ответ

Была некоторая дискуссия относительно API реального времени Instagram, и остается неясным, виноват Instagram или разработчики, которые пытаются его использовать.

Моя проблема связана с первым запросом на подписку. Я думаю, что мой запрос правильный, но я продолжаю получать ошибку \ "callback_url \". URL должен начинаться с \ "http: // \" или \ "https: // \" "

Запрос:

curl -X POST 'httpiptions?client_id=CLIENT_ID&client_secret=CLIENT_SECRET&object=tag&object_id=love&aspect=media&callback_url=http://myurl.com/subscribe' 

Более того, когда я меняю тип запроса на GET вместо POST, я получаю успешное сообщение 200 с пустыми данными, а Instagram не вызывает запрос POST на мой callback_url.

Итак, как я вижу, есть 2 проблемы: 1) Должен ли запрос быть POST (не работает для меня) или GET (действительно сработал для меня). 2) Почему instagram возвращает пустые данные и не отправляет POST на callback_url.


person Nativ    schedule 10.12.2014    source источник


Ответы (1)


Это должен быть POST.

Чтобы успешно подписаться и получить ответ от POST, который вы делаете в качестве запроса на подписку, ваш URL-адрес обратного вызова должен выполнять некоторую дополнительную работу, а также отвечать на запрос GET, отправленный из Instagram, сразу после того, как вы отправите запрос на подписку, чтобы убедиться, что вы являетесь настоящим владельцем URL-адреса callbalck.

Таким образом, ваш URL-адрес обратного вызова, помимо получения POST-сообщений, должен также отвечать на запрос GET и отражать параметр hub.challenge, отправленный в этом запросе GET.

Ознакомьтесь с подробным описанием процесса в документации: http://instagram.com/developer/realtime/

ОБНОВЛЕНИЕ:

Теперь я смог воспроизвести описанную вами ошибку.

Проблема в вашем вызове CURL. Вы должны отправить запрос POST вместе с соответствующими параметрами POST, но ваш вызов выполняет параметры отправки POST как GET в URL-адресе. На самом деле API должен отклонить весь запрос, но кажется, что он частично обрабатывает параметры.

Измените CURL на:

curl -F 'client_id=CLIENT-ID' \
     -F 'client_secret=CLIENT-SECRET' \
     -F 'object=user' \
     -F 'aspect=media' \
     -F 'verify_token=myVerifyToken' \
     -F 'callback_url=http://YOUR-CALLBACK/URL' \
     https://api.instagram.com/v1/subscriptions/

Это выполняет POST и правильно отправляет ваши параметры.

person Amir Rahimi Farahani    schedule 11.12.2014
comment
Спасибо за помощь, к сожалению, я не могу получить первый запрос GET с помощью hub.challenge, потому что я все время получаю сообщение об ошибке callback_url \. URL-адрес должен начинаться с \ http: // \ или \ https: // \. - person Nativ; 12.12.2014