【发布时间】:2018-05-19 23:07:59
【问题描述】:
我正在使用 Instagram 供稿 API 在我的网站上显示我的 Instagram 帖子。 但有些视频网址显示“网址签名已过期”。
对我有什么解决方案吗?
【问题讨论】:
标签: http instagram instagram-api http-status-code-403 http-error
我正在使用 Instagram 供稿 API 在我的网站上显示我的 Instagram 帖子。 但有些视频网址显示“网址签名已过期”。
对我有什么解决方案吗?
【问题讨论】:
标签: http instagram instagram-api http-status-code-403 http-error
您可以使用带有一些额外参数的媒体 URL 作为获取所需图像的解决方案,而不是使用直接图像链接。
例如
https://www.instagram.com/p/Bo7OXJ3hYM8/media/?size=m
注意插件/media/?size=m
不同图片尺寸的字母可以是t、m或l
这应该会返回您想要的图像
【讨论】:
Instagram 已在其媒体 URL 中添加 URL 签名。
您可以使用以下正则表达式轻松删除 URL 签名:“vp.*/.{32}/.{8}/”
以 PHP 为例:
preg_replace('/vp.*\/.{32}\/.{8}\//', '', $mediaUrl)
另一方面,我不认为删除 URL 签名是最好的解决方案(只是一个快速修复)。好的方法是再次调用 Instagram api 以获取新 URL。
更新
似乎 Instagram 当前正在检查 URL 签名,如果签名不存在,则返回 403“访问被拒绝”错误,因此现在唯一的解决方案是再次调用 Instagram API 以获取新的媒体 URL。
2018 年 4 月更新
Instagram 已关闭其“api.instagram.com/v1/media/”端点,因此目前无法更新帖子网址。
一种可能的解决方案是下载媒体并将它们存储在您自己的服务器中(我不推荐此解决方案,因为它违反了 Instagram API 的条款,因此您需要自担风险)。
另一种解决方案是再次调用您找到媒体的原始端点(但目前很难使用新的 API 速率限制来管理调用)。
您还可以在 github 上找到一些可以帮助您的非官方 Instagram API。
【讨论】:
在撰写本文时,您唯一的选择是以某种方式存储或缓存图像。
例如,您可以将图像存储在数据库中。 Instagram 平台政策要求您在应用程序不再需要图像时将其删除。
或者,如果您使用 CDN,则可以通过图像代理提供这些图像,然后在 CDN 上设置较长的到期日期。这样您就不会将图像存储在数据库中,但您的用户仍然可以在 URL 签名过期后看到它们。
【讨论】: