3

我是 Instagram 应用程序开发的新手,并且在一段时间内一直在努力解决这个问题。基本上,它是这样的:

我将用户重定向到授权网址,如下所示:

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

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

这就是我卡住的地方。

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

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


预先感谢您的任何帮助。

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

4

3 回答 3

2

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

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

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

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 即可。如果用户选择不授权您的应用程序,您将收到与显式流程中相同的错误响应

于 2013-02-25T22:39:06.100 回答
1

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

});

于 2015-06-04T17:52:27.357 回答
0

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

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

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

于 2012-05-11T13:22:12.577 回答