通过 Instagram API 访问 public Instagram 内容而不会使 accesstoken 过期

Accessing public Instagram content via Instagram API without expiring accesstoken

我想显示 public 与特定主题标签相关的 instagram 内容(一切正常)但我无法在每次过期时更新 access_token

("do not assume your access_token is valid forever." - https://www.instagram.com/developer/authentication/)

手动续订不是一个选项,我必须确保在任何时候都存在有效的 access_token 而无需重新验证。

有什么想法或问题吗? :)

我有一个想法,但没有 API(和 access_token)。您可以使用 ?__a=1 参数向网页版 Instagram 发出请求。我不知道它会工作多久,但现在有工作流程:

  1. 例如,您想显示 public 带有标签 space 的内容。
  2. 将其添加到 url 并添加 GET 参数 ?__a=1: https://www.instagram.com/explore/tags/space/?__a=1
  3. 发出 GET 请求。它 returns json 的节点在 top_posts (8) 和 media (18) 中。每个节点有ownercaption、评论和点赞数。但最重要的部分在 thumbnail_srcdisplay_src.
  4. media 对象中有 page_info 有助于对结果进行分页。您需要 end_cursor(例如 J0HWE9rjAAAAF0HWE9qvgAAAFiYA
  5. end_cursor 中的值添加到 url:https://www.instagram.com/explore/tags/space/?__a=1&max_id=J0HWE9rjAAAAF0HWE9qvgAAAFiYA
  6. 重复 3-6 以获取带有特定主题标签的最新帖子。

更新为 ?__a=1 url 参数。这似乎已停止与用户“/account/?__a=1”端点一起工作。:(显然仍然适用于标签。

Instagram 关闭了他们的 public API。 PHP 中有一个快速而肮脏的解决方法:

<?php
function getPublicInfo($username) {
    $url     = sprintf("https://www.instagram.com/$username");
    $content = file_get_contents($url);
    $content = explode("window._sharedData = ", $content)[1];
    $content = explode(";</script>", $content)[0];
    $data    = json_decode($content, true);
    return $data['entry_data']['ProfilePage'][0];
}

不确定它能工作多久。 Javascript.

的一个