web-dev-qa-db-fra.com

L'URL du média Instagram / API de flux affiche «La signature URL a expiré»

J'utilise l'API de flux Instagram pour afficher mes publications Instagram sur mon site Web. Mais certaines URL de vidéos affichent 'la signature d'URL a expiré'.

Une solution pour moi?

22
Arun Singh

Instagram a ajouté des signatures URL à leurs URL multimédias.

Vous pouvez facilement supprimer la signature URL en utilisant cette expression régulière: "vp. * /. {32} /. {8} /"

Par exemple en PHP:

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

D'un autre côté, je ne pense pas que la suppression de la signature URL soit la meilleure solution (c'est juste une solution rapide). La bonne est d'appeler à nouveau l'API Instagram afin d'obtenir la nouvelle URL.


MISE À JOUR

Il semble qu'Instagram vérifie actuellement la signature de l'URL et renvoie une erreur 403 "Accès refusé" si la signature n'est pas présente, alors maintenant la seule solution est d'appeler à nouveau l'API Instagram afin d'obtenir la nouvelle URL du média.

MISE À JOUR avril 2018

Instagram a fermé son point de terminaison "api.instagram.com/v1/media/", il n'est donc pas possible actuellement de mettre à jour les URL des messages.

Une solution possible consiste à télécharger les médias et à les stocker sur vos propres serveurs (je ne recommande pas cette solution car elle viole les termes de l'API Instagram, faites-le à vos risques et périls).

Une autre solution consiste à rappeler le point de terminaison d'origine où vous avez retrouvé les médias (mais actuellement, il est difficile de gérer les appels avec la nouvelle limite de débit API).

Vous pouvez également trouver sur github des API Instagram non officielles qui pourraient vous aider.

18
Jordi

Vous pouvez utiliser l'URL du média avec des paramètres supplémentaires comme solution pour obtenir l'image souhaitée au lieu d'utiliser le lien d'image direct.

Par exemple

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

Remarquez l'addon /media /? Size = m

Les lettres peuvent être t , m ou l pour différentes tailles d'image

Cela devrait vous renvoyer l'image souhaitée

Référence: https://www.instagram.com/developer/embedding/

12
Vladimir Afinello

Au moment de la rédaction, votre seule alternative est de stocker ou de mettre en cache les images d'une manière ou d'une autre.

Par exemple, vous pouvez stocker les images dans votre base de données. La politique de la plateforme Instagram exige que vous supprimiez les images lorsque votre application n'en a plus besoin.

Alternativement, si vous utilisez un CDN, vous pouvez servir ces images via un proxy d'image, puis définir de longues dates d'expiration sur le CDN. De cette façon, vous ne stockez pas les images dans une base de données, mais vos utilisateurs peuvent toujours les voir après l'expiration de la signature URL.

4
Pirkka Esko