AngularJS ui-路由器与 OAuth2 冲突 access_token

AngularJS ui-router clashes with OAuth2 access_token

我有一个用 AngularJS 开发的前端和 ui-router。要从后端使用 REST API,我需要获取 OAuth2 访问令牌(隐式授权)。

我的问题出在 OAuth 舞蹈的最后一步,当我在 url

中从身份验证服务器取回访问令牌时
mydomain.com/home/#access_token=hdzjkdnba89fenbjkéz38U0D903ç&...

mydomain.com/home 显然是重定向 URI。

重定向后几分之一秒,AngularJS 将 URL 更改为

mydomain.com/#/my-default-view

因此访问令牌从 URL.

中删除

现在有几件事:

有什么建议吗?

这个对我有用 Google 作为客户端应用程序的 OAuth2 提供商:

$urlRouterProvider.otherwise('/');

$stateProvider.state('access_token', {
    url: '/access_token={accessToken}&token_type={tokenType}&expires_in={expiresIn}',
    template: '',
    controller: function($stateParams) {
        var token = $stateParams.accessToken;
        // do something usefull with token
    }
})

我不再使用 ui-router 但对于那些仍然需要解决方法的人来说,您只需要在正则表达式中捕获令牌。从 the documentation 开始,您可以执行类似

的操作
.state('oauth.token', {
        url: "/o/#{authToken:[0-9a-zA-Z]+}",
        ...
 })

并在 authToken 中获取您的访问令牌。