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

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

对我有什么解决方案吗?

【问题讨论】:

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


    【解决方案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 签名过期后看到它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-07
        • 2021-03-14
        • 2016-05-19
        • 2018-02-03
        • 1970-01-01
        相关资源
        最近更新 更多