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



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

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

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

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

有没有一种方法可以像任何其他支持OAuth2的社交网络API那样获得访问令牌,比如:

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

这样,我就有了一个普通的url参数,它可能可以由任何现代web服务器处理。

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

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

因此,JavaScript可以解析哈希,访问令牌只能用于-JS应用程序(没有服务器端的应用程序),就像直接使用访问令牌与API通信的应用程序一样。另一个原因是,如果你从oAuth对话框请求code,你将被要求将代码和你的API机密一起发送到Instagram,以便与访问令牌交换,这在JS中是不可能的,以防止API机密泄露。

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

最新更新