Instagram/Feed API媒体网址显示"网址已过期"

Aru*_*ngh 23 http http-error http-status-code-403 instagram instagram-api

我正在使用Instagram feed API在我的网站上显示我的Instagram帖子.但是某些视频网址显示" 网址签名已过期 ".

对我有什么解决方案?

Jor*_*rdi 18

Instagram已在其媒体网址中添加了URL签名.

您可以使用此正则表达式轻松删除URL签名:"vp.*/.{32} /.{8} /"

例如在PHP中:

preg_replace('/vp.*\/.{32}\/.{8}\//', '', $mediaUrl)
Run Code Online (Sandbox Code Playgroud)

另一方面,我不认为删除URL签名是最好的解决方案(只是一个快速修复).好的方法是再次调用Instagram api以获取新的URL.


UPDATE

似乎Instagram正在检查URL签名并且如果签名不存在则返回403"拒绝访问"错误,因此现在唯一的解决方案是再次调用Instagram API以获取新的媒体URL.

更新2018年4月

Instagram已经关闭了他们的"api.instagram.com/v1/media/"端点,所以现在目前无法更新帖子网址.

一种可能的解决方案是下载媒体并将它们存储在您自己的服务器中(我不建议使用此解决方案,因为它违反了Instagram API的条款,因此这需要您自担风险).

另一个解决方案是调用原始端点,您可以再次找到媒体(但目前使用新的API速率限制来管理调用很困难).

您也可以在github上找到一些可以帮助您的非官方Instagram API.

  • 您可能想要补充一点,现在也无法始终获取新的URL.Instagram关闭了ID端点https://api.instagram.com/v1/media/ <id>的帖子.在我的情况下,我通过标签收集,所以/最近的端点不会总是返回我想要刷新的帖子. (2认同)

Vla*_*llo 15

您可以使用带有一些额外参数的媒体URL作为获得所需图像的解决方案,而不是使用直接图像链接。

例如

https://www.instagram.com/p/Bo7OXJ3hYM8/media/?size=m
Run Code Online (Sandbox Code Playgroud)

注意插件/ media /?size = m

对于不同的图片尺寸,字母可以是tml

这应该返回您想要的图像

参考:https : //www.instagram.com/developer/embedding/


Pir*_*sko 5

在撰写本文时,您唯一的选择是以某种方式存储或缓存图像。

例如,您可以将图像存储在数据库中。Instagram 平台策略要求您在应用程序不再需要图像时删除它们。

或者,如果您使用 CDN,您可以通过图像代理提供这些图像,然后在 CDN 上设置长到期日期。这样您就不会将图像存储在数据库中,但在 URL 签名过期后,您的用户仍然可以看到它们。