Angular UI-Router - 如何解析哈希参数?

时间:2015-06-29 20:56:52

标签: angularjs facebook-graph-api angular-ui-router

如何在'#'之后获取值?登录网址?

我正在手动使用Facebook构建登录流程,并将其重定向到一个如下所示的网址:

http://example.com/redirect#access_token=1234567890&expires_in=12345

我在UI路由器中的路由如下所示:

  .state('redirect', {
    url     : '/redirect?token',
    templateUrl : '/html/redirect.html'
  })

现在我可以调用$location.hash()并获取一个字符串来解析值。但这种方法感觉很糟糕。我错过了什么吗?有没有更好的方法从这个URL中获取哈希参数?

编辑:要明确,Facebook正在补充说#'#'进入网址。我不知道他们为什么不只是使用'?'因为获取查询参数很简单。

1 个答案:

答案 0 :(得分:0)

使用此配置,这会将此参数公开给$ stateParams(如果已设置)。如果ui-router本身支持,请不要使用$ location.search()。

/redirect?token&expires_in

然后是内部状态(可以在内部解析)

.state('facebookCallback',{
  controller : 'ctrl',
  resolve :
   url : function($location) {
    return $location.url().replace("#","?")
   }
  }
 });