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

时间:2017-12-06 06:21:09

标签: http instagram instagram-api http-status-code-403 http-error

我使用Instagram Feed API在我的网站上显示我的Instagram帖子。 但有些视频网址会显示“网址签名已过期”。

对我来说有什么解决方案吗?

4 个答案:

答案 0 :(得分:18)

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

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

例如在PHP中:

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

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

<强>更新

似乎Instagram正在检查URL签名并返回403&#34;访问被拒绝&#34;如果签名不存在则会出错,因此现在唯一的解决方案是再次调用Instagram API以获取新的媒体URL。

2018年4月更新

Instagram关闭了他们的&#34; api.instagram.com/v1/media /&#34;端点所以现在它无法更新帖子网址。

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

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

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

答案 1 :(得分:8)

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

例如

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

通知插件 / media /?size = m

对于不同的图片尺寸,

字母可以是 t m l

这应该返回您想要的图像

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

答案 2 :(得分:4)

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

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

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

答案 3 :(得分:-5)

只需按CTRL + S即可保存页面,然后将照片保存在保存它的文件夹中