Javascript访问OAuth 2的位置标题的URL片段
OAuth 2.0隐式授权(http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.2)涉及客户端应用程序,浏览器和授权服务器之间的一些有趣的编排。 auth服务器使用Location标头将HTTP 302状态代码返回给浏览器,如下所示:
地点:http://clientapp.com/cb#access_token=2YotnFZFEjr1zCsicMWpAA&state=xyz&token_type=example&expires_in=3600
浏览器在执行重定向之前丢弃片段,并且clientapp.com/cb上的服务应该[从规范]响应“一个能够访问完整重定向URI的网页(通常是带有嵌入脚本的HTML文档),包括用户代理保留的片段,以及提取包含在片段中的访问令牌(和其他参数)“。
我已经实现了这个授权服务器部分,但JavaScript的经验很少。 如何让JavaScript访问浏览器在重定向之前剥离的片段?
谢谢,
迈克尔
试试像这样(摘自德国的这篇文章):
<script>
var fragmentString = location.hash.substr(1);
var fragment = {};
var fragmentItemStrings = fragmentString.split('&');
for (var i in fragmentItemStrings) {
var fragmentItem = fragmentItemStrings[i].split('=');
if (fragmentItem.length !== 2) {
continue;
}
fragment[fragmentItem[0]] = fragmentItem[1];
}
</script>
然后你可以用fragment['access_token']
引用你的访问令牌。
上一篇: Javascript access to Location header's URL fragment for OAuth 2