如何在'#'之后获取值?登录网址?
我正在手动使用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正在补充说#'#'进入网址。我不知道他们为什么不只是使用'?'因为获取查询参数很简单。
答案 0 :(得分:0)
使用此配置,这会将此参数公开给$ stateParams(如果已设置)。如果ui-router本身支持,请不要使用$ location.search()。
/redirect?token&expires_in
然后是内部状态(可以在内部解析)
.state('facebookCallback',{
controller : 'ctrl',
resolve :
url : function($location) {
return $location.url().replace("#","?")
}
}
});