无需登录即可生成访问令牌 Instagram API?

Posted

技术标签:

【中文标题】无需登录即可生成访问令牌 Instagram API?【英文标题】:Generate access token Instagram API, without having to log in? 【发布时间】:2016-01-23 19:32:27 【问题描述】:

所以我正在构建一个餐厅应用程序,我想要的功能之一是允许该应用程序的用户查看来自特定餐厅 Instagram 帐户的照片。 而且我希望用户无需登录他们的 Instagram 帐户即可看到此内容,因此他们甚至不需要 Instagram 帐户即可使用。

所以我已经阅读了这个答案How can I get a user's media from Instagram without authenticating as a user?

我尝试了它所说的并使用了 client_id(当我使用我的个人 Instagram 帐户注册我的应用程序时收到的),但我仍然收到一条错误消息:


    meta: 
          error_type: "OAuthAccessTokenException",
          code: 400,
          error_message: "The access_token provided is invalid."
     

我要达到的终点是:

https://api.instagram.com/v1/users/search?q=[USERNAME]&client_id=[CLIENT ID]

那么我是否绝对需要一个访问令牌才能使其工作(因此必须强制用户登录)?

如果我这样做了,那么有没有办法在不强制用户登录的情况下以某种方式生成访问令牌?

我相信有办法解决这个问题,因为流行的约会应用程序 Tinder 具有我正在寻找的所需功能,因为它允许您查看来自人们的 Instagram 帐户的照片,而无需登录! (我刚刚在 5 分钟前验证了这一点!)

对此的任何帮助将不胜感激。

谢谢。

【问题讨论】:

【参考方案1】:

2018 年 4 月编辑:在 facebook 隐私案例之后,此端点立即停止服务。看来我们需要直接在个人资料页面中解析嵌入在<script>标签中的JSON:

<script type="text/javascript">window._sharedData = "activity_counts":...

欢迎任何更好的想法。


您可以使用最新的链接

GET https://www.instagram.com/用户名/?__a=1

以 JSON 格式获取最新的 20 篇文章。希望你好好利用它。


编辑:其他方式不再有效: https://www.instagram.com/username/media/

【讨论】:

目前 instagram 已停止此操作并且未找到给定页面。那么你能帮我解决这个问题吗 你好,我觉得现在已经失效了 @KendrickKesley 不幸的是你是对的。相应地更新了答案。【参考方案2】:

Instagram 过去只允许使用 client_id 而没有 access_token 的大多数 API 请求,当天注册的应用程序仍然可以正常工作,这就是某些应用程序无需用户登录即可显示 Instagram 照片的方式。 Instagram 更改了 API 规范,因此新应用必须获得 access_token,旧应用必须在 2016 年 6 月之前进行更改。

解决此问题的一种方法是使用您的帐户生成的access_token 访问照片。本地登录并获取access_token,将其用于所有API调用,它不应该更改,除非您更改密码,如果它过期,请在您的服务器中重新生成和更新。

【讨论】:

您能告诉我如何让我的帐户 access_token 在本地登录吗?本地是指网络浏览器?谢谢。 文档在这里:instagram.com/developer/authentication 这不是一个简单的步骤,你必须按照这里的步骤操作【参考方案3】:

由于端点不再存在,我切换到 php 库 - https://github.com/pgrimaud/instagram-user-feed

用composer安装了这个库:

composer require pgrimaud/instagram-user-feed "^4.0"

获取提要对象 -

$cache = new Instagram\Storage\CacheManager();
$api   = new Instagram\Api($cache);
$api->setUserName('myvetbox');
$feed = $api->getFeed();

如何使用该对象的示例 -

foreach ($feed->medias as $key => $value) 
   echo '<li><a href="'.$value->link.'" target="_blank"><img src="'.$value->thumbnailSrc.'"></a></li>';

【讨论】:

以上是关于无需登录即可生成访问令牌 Instagram API?的主要内容,如果未能解决你的问题,请参考以下文章

Instagram API中的“访问令牌”和“代码”之间有什么区别?

如何在不登录的情况下从 Instagram 获取 oauth 2 访问令牌(隐式流程)?

无需身份验证令牌即可访问 Google 电子表格 API

如何在 NodeJS 中获取 Instagram 用户名和访问令牌

使用 IdentityServer3 生成访问令牌,无需密码

Instagram 图形 API 访问令牌