【问题标题】:Obtaining Instagram Access Token获取 Instagram 访问令牌
【发布时间】:2016-10-22 07:25:22
【问题描述】:

我们有一个客户,他在网站上有一个简单的 Instagram 功能,可以按特定标签提取照片。他们只是注意到它不起作用。收到错误 - 访问令牌无效。我想从一开始就因为更新了。我们过去不需要访问令牌,因为我们没有对用户做任何事情——只是标签。

现在看起来我们需要一个,而文档对于如何获得一个来说是零意义的。他们似乎不接受大多数应用程序。该应用程序也处于沙盒模式。所以我假设是因为它被切换到那个?没有收到这件事的通知。

文档中获取访问令牌的第一步是“将用户定向到我们的授权 URL”。那有什么意思?没有提供链接或任何东西。它还说“需要公司名称、联系电子邮件和隐私政策 URL 才能开始提交。”我们的应用没有隐私政策……它只是一个简单的标签提要。我不明白为什么只有一个简单的标签提要一切都那么复杂。

是否需要等待时间才能让应用获得批准..如果获得批准...在获得访问令牌之前是否必须先获得批准?这在任何地方都没有概述。

【问题讨论】:

    标签: instagram


    【解决方案1】:

    你没看错。自 2016 年 6 月起,任何 Instagram API 调用都需要访问令牌。

    documentation 中描述了获取访问令牌。不需要应用批准。

    有两种获取方式:服务器端或客户端。第二个选项(称为隐式身份验证)只能在客户端设置中启用 隐式 OAuth 时使用(管理客户端 > 编辑客户端 > 安全性 > 禁用隐式 OAuth)。默认禁用。

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

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

    https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
    

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

    https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
    

    在此之后,您将被重定向到REDIRECT-URI,它将被传递一个参数。对于显式模式,这将是一个带有 code 的查询字符串,而对于隐式模式,您将直接以哈希的形式获得 访问令牌

    http://your-redirect-uri?code=CODE
    http://your-redirect-uri#access_token=ACCESS-TOKEN
    

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

    然而,对于显式模式,您需要进一步处理 代码 以获得访问令牌。您可以在API Documentation 中阅读如何做到这一点。此处不再赘述。

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

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

    2. 您可以通过将 /media/ 附加到用户页面 URL 来检索 JSON 数据而无需身份验证,如 this post 中所述。无需令牌或客户端 ID 即可工作。但是,这仅适用于用户,不适用于标签。此外,Instagram 没有记录此功能,因此无法保证将来可以使用。

    3. 您可以使用 JuicerDialogfeed 之类的聚合器来代替您处理访问令牌。这通常不是免费的。

    我也在为我的网站制作 Instagram 供稿,这是我从研究中得出的结论。请原谅我犯的任何错误。


    编辑:以下是沙盒应用的更多限制。

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

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

    因此,要使标签供稿发挥作用,它需要处于活动状态(经过审核和批准)。如果您不想这样做,唯一的选择是使用我上面提到的聚合器。

    【讨论】:

    • 感谢您的详细评论。我在第一步试图弄清楚授权 URL 是什么时迷路了,因为他们没有在那个文档页面上概述它。无论如何,看起来我们不允许这样做。 grab.by/R08A 由于他们更改了权限,因此不允许使用简单的标签供稿(愚蠢!)。看起来我们将使用第二个选项并使用他们的用户提要。感谢您指出了这一点。不明白为什么他们有一个开放的用户端点而不是标签。
    猜你喜欢
    • 2017-04-28
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多