Instagram/feed API 媒体 URL 显示“URL 签名已过期”

Posted

技术标签:

【中文标题】Instagram/feed API 媒体 URL 显示“URL 签名已过期”【英文标题】:Instagram/feed API media URL shows 'URL signature expired' 【发布时间】:2018-05-19 23:07:59 【问题描述】:

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

对我有什么解决方案吗?

【问题讨论】:

【参考方案1】:

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

例如

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

注意插件/media/?size=m

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

这应该会返回您想要的图像

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

【讨论】:

【参考方案2】:

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。

【讨论】:

你知道他们最初使用 URL 签名的动机是什么吗?我想知道如果我们获取没有签名的媒体会发生什么。 @zaboco 可能他们不希望应用程序存储媒体 URL。 @ZorleQ 你是对的,这似乎不再起作用,所以唯一的解决方案是再次调用 Instagram API 以获取新的媒体 URL。 您可能想补充一点,现在获取新 URL 也不总是可行的。 Instagram 关闭了 ID 端点 api.instagram.com/v1/media/<id> 的获取帖子。就我而言,我是按标签收集的,因此 /recent 端点不会总是返回我想要刷新的帖子。 你是对的@yagger,我将在本周晚些时候编辑答案。谢谢你的更新! :)【参考方案3】:

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

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

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

【讨论】:

以上是关于Instagram/feed API 媒体 URL 显示“URL 签名已过期”的主要内容,如果未能解决你的问题,请参考以下文章

xml Instagram Feed

php 注册Instagram Feed的小部件区域。

php 注册Instagram Feed的小部件区域。

markdown Authenticate - Instagram Feed WordPress插件

css 用于设置Instagram Feed的CSS。

css 用于设置Instagram Feed的CSS。