Instagram如何获得access_token

时间:2012-05-11 13:14:35

标签: javascript instagram

我是Instagram应用程序开发的新手,现在已经有一段时间在解决这个问题了。基本上,这就是它的样子:

我正在将用户重定向到授权网址:

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

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

这就是我卡住的地方。

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

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


提前感谢您的帮助。

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

3 个答案:

答案 0 :(得分:2)

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

客户端(隐式)身份验证 如果你正在构建一个没有服务器组件的应用程序(例如纯粹的javascript应用程序),你会注意到完成上面的第三步以接收你的access_token而不必发送你的客户机密码是不可能的。您永远不应将您的客户机密钥发送到您无法控制的设备上。那你怎么得到access_token?那些负责OAuth 2.0规范的智能人员预见到了这个问题并创建了隐式认证流程。

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

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

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

第二步:通过URL片段

接收access_token

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

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

只需从URL片段中获取access_token,就可以了。如果用户选择不授权您的应用程序,您将收到与显式流程

相同的错误响应

答案 1 :(得分:1)

一个简单的例子,在api.instagran(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);
}

});

答案 2 :(得分:0)

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

像PHP中的GET ['code']。如果您提供有关服务器端框架的更多详细信息,那么回答您的qwery会很有帮助。

如果您在Javascript上使用,可以使用github.com/Instagram/instagram-javascript-sdk。