【问题标题】:Instagram how to get access_tokenInstagram 如何获取 access_token
【发布时间】:2012-05-11 13:14:34
【问题描述】:

我是 Instagram 应用程序开发的新手,并且已经在这个问题上苦苦挣扎了一段时间。基本上是这样的:

我将用户重定向到这样的授权网址:

window.open("https://api.instagram.com/oauth/authorize/?client_id=" + igClientId + "&redirect_uri=" + igCallbackUrl + "&response_type=code", "_blank");

然后,当用户登录时,页面会重新加载,并且 Instagram CODE 会添加到回调 url ('?code=returned_by_instagram_code') 的末尾。

这就是我卡住的地方。

如何在页面重新加载后从 url 获取返回的代码(它存储在 cookie 或 session 中,以便我可以通过某种方式访问​​它,或者我应该通过回调 url 和附加的一些函数以某种方式获取它)?

接下来,当我获得代码后,我可以向 Instagram 发送 (POST) 请求access_token吗?


提前感谢您的帮助。

PS。我正在使用没有任何框架(例如 jquery)的 javascript,这是我正在寻找的响应。

【问题讨论】:

  • 本教程包含一个链接,用于生成您的身份验证令牌和您的用户 ID。然后它继续向你展示你可以用它做什么。见这里:blueprintinteractive.com/blog/…

标签: javascript instagram


【解决方案1】:

从仅使用客户端访问令牌生成 (http://instagram.com/developer/authentication/) 的文档中,您需要更改的关键是 URL 中的响应代码为:&response_type=token

客户端(隐式)身份验证 如果您正在构建一个没有服务器组件的应用程序(例如,一个纯粹的 javascript 应用程序),您会注意到在不发送您的客户端密码的情况下,不可能完成上面的第三步来接收您的 access_token。您永远不应该将您的客户机密发送到您无法控制的设备上。那么如何获得 access_token 呢?好吧,负责 OAuth 2.0 规范的聪明人预见到了这个问题并创建了隐式身份验证流程。

第一步:将您的用户引导至我们的授权网址

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

此时,我们会向用户显示一个登录屏幕,然后是一个确认屏幕,他们会在其中批准您的应用访问他们的 Instagram 数据。请注意,与显式流程不同,此处的响应类型是“令牌”。

第二步:通过 URL 片段接收 access_token

一旦用户通过身份验证并授权您的应用程序,我们将使用 url 片段中的 access_token 将他们重定向到您的 redirect_uri。它看起来像这样:

http://your-redirect-uri#access_token=270740070.f59def8.d58713f2c81741c5b3686109306f98b4

只需从 URL 片段中获取 access_token 即可。如果用户选择不授权您的应用程序,您将收到与显式流程中相同的错误响应

【讨论】:

    【解决方案2】:

    一个简单的例子,在 api.instagra (https://instagram.com/developer/clients/register/) 上的注册应用程序中获取您的令牌。请先登录:

    var accessToken = '5e6e329062f047dd95ggj6c9df202c828';
    
    $.ajax({
     url: 'https://api.instagram.com/v1/media/popular',
     dataType: 'jsonp',
     type: 'GET',
     data: {client_id: accessToken},
     success: function(data){
        console.log(data);
        for(x in data.data){
          $('ul').append('<li><img  src="'+data.data[x].images.low_resolution.url+'"></li>');  
        }
    },
    error: function(data){
        console.log(data);
    }
    

    });

    【讨论】:

      【解决方案3】:

      igCallbackUrl 将重定向到一个页面。该代码可以作为该请求的 GET 参数访问。

      类似 GET['code'] 在 php 中。如果您提供有关服务器端框架的更多详细信息,那么回答您的问题将很有帮助。

      如果您使用的是 Javascript,则可以使用 github.com/Instagram/instagram-javascript-sdk。

      【讨论】:

      • 没那么简单。流程如下所示:打开 instagram 授权 url -> 单击按钮以授权应用程序 -> instagram 会将您重定向到 igCallbackUrl,并在 url 末尾添加 '?code=returned_code' 这样就可以访问代码只能通过地址栏。但即使我会从地址栏获取代码,我也无法将其发布到 instagram 以获取 access_token。你有什么想法可以在javascript中完成吗?
      • 这是标准的 oauth 协议。您正在学习的方式我建议您使用您喜欢的语言的杰出库。
      • Instagram 正在使用 oauth 2.0。您对它的实施有什么建议吗?
      • 这个仍然是基础。 ietf.org/mail-archive/web/oauth/current/msg08521.html (Javascript)。你可以在这里查看stackoverflow.com/questions/4551108/… 一些与 Auth 2.0 相关的 php 库
      • 我试图在(在 JS 中)使用第一个,但它不能正常工作:/ 仍在寻找将 JS 连接到 Instagram 的好解决方案...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      相关资源
      最近更新 更多