获取Instagram访问令牌

pin*_*pii 6 instagram

我们有一个客户在网站上有一个简单的Instagram功能,可以通过某个标签来提取照片.他们只是发现它不起作用.获取错误 - 访问令牌无效.我想自1日起因为更新.我们以前不需要访问令牌,因为我们没有对用户做任何事情 - 只是标签.

现在看起来我们需要一个,文档对如何获得一个没有任何意义.似乎他们不接受大多数应用程序.该应用程序也处于沙盒模式.所以我假设它是因为它切换到了那个?没有发生这种情况的通知.

获取访问令牌的文档的第一步是"将用户指向我们的授权URL".那有什么意思?没有提供链接或任何东西.它还说"开始提交时需要"公司名称,联系电子邮件和隐私政策URL." 我们的应用程序没有隐私政策...它只是一个简单的标签供稿.我不明白为什么一切都如此复杂,以便有一个简单的标签Feed.

是否有等待时间让应用程序获得批准..如果它获得批准......在获取访问令牌之前,我是否必须获得批准?这在任何地方都没有概述.

Mid*_*das 9

你做对了.截至2016年6月,任何Instagram API调用都需要访问令牌.

文档中描述了获取访问令牌.不需要应用程序批准.

有两种方法可以获得一种:服务器端或客户端.第二个选项(称为隐式身份验证)只能在客户端设置()中启用隐式OAuth时使用Manage Clients > Edit Client > Security > Disable implicit OAuth.默认情况下禁用它.

在任何一种情况下,您都需要将用户重定向到授权URL以获取访问令牌.

显式模式(服务器端)的URL是:

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
Run Code Online (Sandbox Code Playgroud)

隐式模式(客户端)的URL是:

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
Run Code Online (Sandbox Code Playgroud)

在此之后,您将被重定向到REDIRECT-URI,将传递一个参数.对于显式模式,这将是带有代码的查询字符串,而对于隐式模式,您将直接获取访问令牌作为哈希:

http://your-redirect-uri?code=CODE
http://your-redirect-uri#access_token=ACCESS-TOKEN
Run Code Online (Sandbox Code Playgroud)

对于隐式模式,您可以从window.location.hashJavascript中获取访问令牌.

但是,对于显式模式,您需要进一步处理代码以获取访问令牌.您可以在API文档中了解如何完成此操作.我不会在这里继续这一点.

问题是,每个想要查看您的Feed的用户都需要登录Instagram(并拥有一个帐户)才能查看.在您的情况下,这可能不是所希望的.但是,有一些选项可以解决这个问题(相当恼人):

  1. 您可以重复使用自己的(已获得的)访问令牌来显示每个用户的Instagram Feed.您需要了解每个令牌的速率限制.对于沙盒应用程序,这是500个API调用/小时,而实时模式允许5000个API调用/小时.[ source ]您可以在表中存储令牌并以循环方式使用它们,以允许更多的API调用.这涉及手动获取应用程序可以使用的一堆令牌(越多越好).考虑到Instagram不保证访问令牌具有无限的生命周期,这可能不是理想的解决方案.

  2. 您可以通过附加retreive JSON数据,而无需验证/media/用户页面URL,如在这个岗位.此操作无需令牌或客户端ID.但是,这仅适用于用户,不适用于标签.此外,Instagram没有记录此功能,因此无法保证将来的工作.

  3. 您可以使用像JuicerDialogfeed这样的聚合器,它将为您处理访问令牌.这通常不是免费的.

我也正在为我的网站制作Instagram Feed,这就是我从研究中得出的结论.如果我犯了任何错误,请裸露.


编辑:以下是沙盒应用程序的一些限制.

在沙盒模式下,您只能访问沙箱用户(因此收到沙箱邀请的用户)的数据.这意味着:

  • 例如/users/{user-id}/media/recent,如果用户不是任何沙盒用户,则用户返回的媒体将返回空响应.
  • 例如/tags/{tag-name}/media/recent,通过标签检索的媒体将仅包含属于沙箱用户的标记媒体.

因此,要使标签源工作,它需要是实时的(审查和批准).如果您不想这样做,唯一的选择是使用上面提到的聚合器.