从Instagram OAuth回调中获取Access令牌作为参数,而不是片段

时间:2015-11-26 16:33:59

标签: instagram instagram-api

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

http://your-redirect-uri#access_token=ACCESS-TOKEN

绝大多数网络服务器都不会收到任何跟随uri中 的内容,因此访问令牌会在到达服务器之前被剥离并丢失准备重定向。

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

是否有办法像支持OAuth2的任何其他社交网络API一样获取访问令牌,如下所示:

http://your-redirect-uri&access_token=ACCESS-TOKEN

这样,我会有一个普通的url param,可以通过任何现代Web服务器来处理。

来源:http://instagram.com/developer/authentication/

1 个答案:

答案 0 :(得分:1)

要回答您的问题,我们无法做到这一点。并且,如果您对为什么不可能这样做感兴趣,那么出于几个安全原因,例如,哈希将不会传递到服务器端;因此,它们无法被解析和保存以供以后使用。 但是,总有一些JavaScript可以将哈希传递给服务器端。

所以,JavaScript can parse the hash,访问令牌只能用于-JS应用程序(没有服务器端的应用程序)就像直接使用访问令牌与API通信的应用程序一样。另一个原因是,如果您从oAuth对话框中请求code,您将需要将代码连同您的API秘密一起发送给Instagram以与访问令牌交换它,这不可能通过JS来防止API秘密妥协。

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