从Instagram OAuth回调中以param而不是片段的形式获取访问令牌

从Instagram OAuth回调中以param而不是片段的形式获取访问令牌,instagram,instagram-api,Instagram,Instagram Api,根据Instagram开发者文档,返回到重定向回调URL的访问令牌是以下形式的片段: http://your-redirect-uri#access_token=ACCESS-TOKEN 绝大多数web服务器不会接收uri中#后面的任何内容,因此访问令牌将在到达准备重定向的服务器之前被剥离并丢失 我认为这是Instagram身份验证堆栈的一个主要限制,从第一个版本开始,Instagram身份验证堆栈就一直存在,我认为除了直接使用JS或JS库在浏览器中解决这一问题之外,没有其他解决方案 是否有一

根据Instagram开发者文档,返回到重定向回调URL的访问令牌是以下形式的片段:

http://your-redirect-uri#access_token=ACCESS-TOKEN
绝大多数web服务器不会接收uri中#后面的任何内容,因此访问令牌将在到达准备重定向的服务器之前被剥离并丢失

我认为这是Instagram身份验证堆栈的一个主要限制,从第一个版本开始,Instagram身份验证堆栈就一直存在,我认为除了直接使用JS或JS库在浏览器中解决这一问题之外,没有其他解决方案

是否有一种方法可以像其他支持OAuth2的社交网络API那样获取访问令牌,如下所示:

http://your-redirect-uri&access_token=ACCESS-TOKEN
这样,我就有了一个普通的url参数,这可能是任何现代web服务器都可以处理的


来源:

要回答你的问题,没有办法。而且,如果您对为什么这不可能感兴趣,这是出于几个安全原因,例如,哈希不会传递到服务器端;因此,它们不能被解析并保存以供以后使用。然而,总是有JavaScript可以将哈希传递到服务器端

因此,访问令牌只能用于JS应用程序(没有服务器端的应用程序),比如直接使用访问令牌与API通信的应用程序。另一个原因是,如果您从oAuth对话框请求
code
,则需要将代码连同API密码一起发送到Instagram,以便与访问令牌进行交换,这在JS中是不可能防止API密码泄露的


一种解决方法是使用JavaScript解析哈希,然后通过AJAX将其传递到服务器端。

因此,唯一的方法是根本不使用服务器?当其他所有社交网络API都做了正确的事情时,为什么你会说这是安全原因呢?我试图在这里限制你的选择,但你有两个选择;要么请求
code
,然后从API请求访问令牌,要么直接请求访问令牌,然后用JS:)将其传递回服务器。安全部分是为了防止直接使用访问令牌访问服务器(尽管我链接了JS hack)