我的问题是我使用auth0作为我的身份验证服务,现在当用户登录并通过身份验证后,它会被重定向回我的回调网址,然后决定在哪里发送用户我的问题是当你得到从auth0重定向回你的回调网址,url字符串中有queryParams,如此...
http://localhost:4200/account/login/callback#access_token="dsadsadsadsa dasdsaa"
仅作为示例,但是在一瞬间,查询字符串被删除,其左侧为http://localhost:4200
现在我试图使用此方法获取查询Params
this.activatedRoute.queryParams.subscribe(params => {
console.log(params);
});
现在这应该可以工作,但是console.log每次都是一个空对象,我认为是因为那个url发生了变化..
有没有什么方法可以在删除之前抓取查询参数?
修改
基本上发生的事情是我接受了身份验证然后被重定向到
localhost:4200/account/login/callback?acessToken="dasdasdaefssves"
但随后路线变为
localhost:4200/account/login/callback
在activatedRoute
函数有机会运行之前没有查询参数!
任何帮助将不胜感激!
答案 0 :(得分:0)
请注意,您的重定向网址为http://localhost:4200/account/login/callback?access_token="dsadsadsadsa dasdsaa"
但角度将其路由到localhost:4200/account/callback
注意强>
您没有在angular中定义 / account / login / callback 路由。但您改为使用 / account / callback 路线。 Angular尝试解析路由并将其重定向到 / account / callback ,而不使用queryParams。
以角度定义路线,您的问题将得到解决。
答案 1 :(得分:-1)
我没有得到你完整的问题,但我理解的很多。您想从URL获取查询参数。
从URL获取查询参数您需要这样做。
constructor(private activatedRoute: ActivatedRoute){}
这是您从URL获取所有查询参数的方法。
this.activatedRoute.queryParamMap
.map((params: Params) => params.params)
.subscribe( (params) => {
if(params && params['access_token']){
console.log(params['access_token']);
}
});