Медиа-адрес Instagram/feed API показывает «Срок действия подписи URL истек»

Я использую API ленты Instagram, чтобы показывать свои публикации в Instagram на своем веб-сайте. Но URL-адрес некоторых видео показывает «Срок действия подписи URL-адреса истек».

Любое решение для меня?


person Arun Singh    schedule 06.12.2017    source источник


Ответы (3)


Вы можете использовать URL-адрес мультимедиа с некоторыми дополнительными параметрами в качестве решения для получения желаемого изображения вместо использования прямой ссылки на изображение.

Например

https://www.instagram.com/p/Bo7OXJ3hYM8/media/?size=m

Обратите внимание на дополнение /media/?size=m.

Буквы могут быть t, m или l для изображений разного размера.

Это должно вернуть вам желаемое изображение

Ссылка: https://www.instagram.com/developer/embedding/

person Vladimir Afinello    schedule 12.12.2018

Instagram добавил URL-подписи к своим URL-адресам мультимедиа.

Вы можете легко удалить подпись URL, используя это регулярное выражение: "vp.*/.{32}/.{8}/"

Например, в PHP:

preg_replace('/vp.*\/.{32}\/.{8}\//', '', $mediaUrl)

С другой стороны, я не думаю, что удаление подписи URL — лучшее решение (это просто быстрое решение). Хороший способ — снова вызвать API Instagram, чтобы получить новый URL-адрес.


ОБНОВЛЕНИЕ

Похоже, что Instagram в настоящее время проверяет подпись URL-адреса и возвращает ошибку 403 «Отказано в доступе», если подпись отсутствует, поэтому теперь единственным решением является повторный вызов API Instagram, чтобы получить новый URL-адрес мультимедиа.

ОБНОВЛЕНИЕ, апрель 2018 г.

Instagram закрыл свою конечную точку «api.instagram.com/v1/media/», поэтому в настоящее время невозможно обновить URL-адреса сообщений.

Возможным решением является загрузка мультимедиа и хранение их на ваших собственных серверах (я не рекомендую это решение, поскольку оно нарушает условия API Instagram, поэтому делайте это на свой страх и риск).

Другим решением является повторный вызов исходной конечной точки, где вы нашли медиафайлы (но в настоящее время трудно управлять вызовами с новым ограничением скорости API).

Также вы можете найти некоторые неофициальные API Instagram на github, которые могут вам помочь.

person Jordi    schedule 02.02.2018
comment
Знаете ли вы, что мотивирует их использовать подписи URL в первую очередь? Интересно, что произойдет, если мы получим носитель без подписи. - person zaboco; 20.03.2018
comment
@zaboco, вероятно, они не хотят, чтобы приложения сохраняли URL-адреса мультимедиа. - person Jordi; 26.03.2018
comment
@ZorleQ, вы правы, похоже, это больше не работает, поэтому единственное решение — снова вызвать API Instagram, чтобы получить новые URL-адреса мультимедиа. - person Jordi; 26.03.2018
comment
Возможно, вы захотите добавить, что получить новый URL теперь также не всегда возможно. Instagram закрыл получение сообщения по конечной точке идентификатора api.instagram.com/v1/media/‹id< /а>›. В моем случае я собираю по тегам, поэтому конечная точка /recent не всегда будет возвращать сообщения, которые я хочу обновить. - person yagger; 10.04.2018
comment
Вы правы @yagger, я отредактирую ответ позже на этой неделе. Спасибо за обновление! :) - person Jordi; 16.04.2018

На момент написания вашей единственной альтернативой было каким-то образом сохранять или кэшировать изображения.

Например, вы можете хранить изображения в своей базе данных. Политика платформы Instagram требует, чтобы вы удаляли изображения, когда они больше не нужны вашему приложению.

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

person Pirkka Esko    schedule 23.04.2018