通过 Instagram API 访问公共 Instagram 内容而不使 accesstoken 过期
Posted
技术标签:
【中文标题】通过 Instagram API 访问公共 Instagram 内容而不使 accesstoken 过期【英文标题】:Accessing public Instagram content via Instagram API without expiring accesstoken 【发布时间】:2017-04-20 19:56:42 【问题描述】:我想显示与特定主题标签相关的 instagram 中的公共内容(一切正常),但我无法在 access_token
每次到期时更新它。
("不要假设你的 access_token 永远有效。" - https://www.instagram.com/developer/authentication/)
手动更新它不是一个选项,我必须确保在任何时候都有一个有效的access_token
而无需重新验证。
有什么想法或问题吗? :)
【问题讨论】:
当我查看文档时,他们似乎没有提供刷新令牌,因此您无法刷新访问令牌。 您能告诉我您如何检索特定哈希标签的公开帖子吗? 【参考方案1】:我有一个想法,但没有 API(和 access_token
)。您可以使用 ?__a=1
参数向网络版 Instagram 发出请求。我不知道它会工作多久,但现在有工作流程:
-
例如,您希望显示带有标签
space
的公共内容。
将其添加到url并添加GET参数?__a=1
:https://www.instagram.com/explore/tags/space/?__a=1
发出 GET 请求。它返回json
,节点位于top_posts
(8) 和media
(18)。每个节点都有owner
、caption
、cmets 数量和点赞数。但最重要的部分在thumbnail_src
和display_src
。
media
对象中有 page_info
有助于对结果进行分页。您需要end_cursor
(例如J0HWE9rjAAAAF0HWE9qvgAAAFiYA
)
将end_cursor
中的值添加到url:https://www.instagram.com/explore/tags/space/?__a=1&max_id=J0HWE9rjAAAAF0HWE9qvgAAAFiYA
重复 3-6 以获取带有特定主题标签的最新帖子。
【讨论】:
感谢您的回答!这现在可能有效,但我需要一个稳定的未来解决方案。未来可能会有未宣布的变化.. 它至少可以工作 7 个月。我认为它相当稳定。 这对于用户名现在不起作用。例如:instagram.com/3mariachisrd/?__a=1【参考方案2】:更新 ?__a=1 网址参数。这似乎已停止与用户 '/account/?__a=1' 端点一起使用。:( 显然仍然适用于标签。
【讨论】:
是的,我可以确认这一点。在我开发一些软件的过程中关闭。以为这是来自 instagram 的软 IP 禁令,但后来注意到它甚至通过代理和多个设备给出 403 拒绝访问响应。 这里也是。我猜他们会在听证会后关闭漏洞。 我认为这与 facebook 的隐私门有关。但我不再关注那个话题了。 还有什么办法吗? 天哪!还有其他方法吗??【参考方案3】:Instagram 关闭了他们的公共 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];
不确定它会工作多长时间。 Here 是 javascript 的。
【讨论】:
以上是关于通过 Instagram API 访问公共 Instagram 内容而不使 accesstoken 过期的主要内容,如果未能解决你的问题,请参考以下文章
如何使用新 API 从 Instagram 获取公共数据或标签?
如何在没有 instagram API 的情况下从 instagram 获取公共用户的所有帖子
如何使用 instagram api/gem 模拟实际服务为方法编写测试?