首页 文章

Javascript访问位置标头的OAuth 2的URL片段

提问于
浏览
6

OAuth 2.0隐式授权(http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.2)涉及客户端应用程序,浏览器和授权服务器之间的一些有趣的编排 . auth服务器向浏览器返回HTTP 302状态代码,其中包含Location头,如下所示:

位置:http://clientapp.com/cb#access_token=2YotnFZFEjr1zCsicMWpAA&state=xyz&token_type=example&expires_in=3600

浏览器在执行重定向之前删除片段,clientapp.com / cb上的服务应该响应[来自规范]“能够访问完整重定向URI的网页(通常是带有嵌入式脚本的HTML文档)”用户代理保留的片段,并提取片段中包含的访问令牌(和其他参数)“ .

我已经实现了这个授权服务器部分,但只有很少的JavaScript经验 . 如何让JavaScript访问浏览器在重定向之前剥离的片段?

谢谢,
迈克尔

1 回答

  • 7

    尝试这样的事情(取自this german article):

    <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'] 引用您的访问令牌 .

相关问题