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

时间:2016-01-23 19:32:28

标签: rest authentication oauth instagram instagram-api

所以我正在构建一个餐厅应用程序,我想要的一个功能是允许该应用程序的用户查看来自特定餐厅的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分钟前验证了这一点!)

对此的任何帮助都将非常感激。

感谢。

3 个答案:

答案 0 :(得分:5)

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

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

欢迎任何更好的想法。

您可以使用最新的链接

获取https://www.instagram.com/ {username} /?__ a = 1

以JSON格式获取最新的20篇帖子。希望你能很好地利用它。

编辑:其他方式不再有效: <击> https://www.instagram.com/ {名} /媒体/

答案 1 :(得分:1)

Instagram过去只允许client_id而没有access_token的大多数API请求,当天注册的应用程序仍然可以使用,这就是一些应用程序如何能够在没有用户登录的情况下显示Instagram照片。 Instagram已更改API规范,因此新应用必须获得access_token,旧应用必须在2016年6月之前更改。

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

答案 2 :(得分:1)

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

使用composer安装此lib:

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

获取Feed对象 -

$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>';
}