我是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),这是我正在寻找的响应。
答案 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。