使用 Angular 重定向 URI 回调后从 URL 获取 OAuth 令牌
Grabbing the OAuth Token From URL After Redirect URI Callback Using Angular
我将我的 Angular 应用程序重定向到 Spotify 登录 (https://accounts.spotify.com/authorize)
一旦他们登录,他们将被重定向回 http://localhost:4200/callback。这个 URL 附有一个令牌。但它立即重定向到(我希望它重定向到这里):
const appRoutes: Routes = [{ path: 'callback', redirectTo: '/host', pathMatch: 'full' }]
How/where 我可以保留授权令牌而不让它位于用户 URL 中吗?
我意识到我最终也会需要 AuthGuards,但首先我想取回令牌。
建议不要在路由配置中直接设置"redirectTo"。相反,添加一个 callbackComponent 来处理令牌和重定向。喜欢以下内容:
const appRoutes: Routes = [
{ path: 'callback', component: CallbackComponent }
]
在回调组件中
export class CallbackComponent implements OnInit {
constructor(private route: ActivatedRoute, private router: Router) {}
public ngOnInit():void {
const token = this.route.snapshot.queryParamMap.get('token');
// Handle token
// ...
this.router.navigate(['./host']);
}
}
不应在 app.component.ts 中处理自动重定向验证,如果是,则通过 guards 处理它,因为它负责重定向。
然后
constructor(private route: ActivatedRoute){}
public ngOnInit():void {
const token = this.route.snapshot.queryParamMap.get('token');
// Handle token
// ...
this.router.navigate(['./host']);
}
我将我的 Angular 应用程序重定向到 Spotify 登录 (https://accounts.spotify.com/authorize) 一旦他们登录,他们将被重定向回 http://localhost:4200/callback。这个 URL 附有一个令牌。但它立即重定向到(我希望它重定向到这里):
const appRoutes: Routes = [{ path: 'callback', redirectTo: '/host', pathMatch: 'full' }]
How/where 我可以保留授权令牌而不让它位于用户 URL 中吗?
我意识到我最终也会需要 AuthGuards,但首先我想取回令牌。
建议不要在路由配置中直接设置"redirectTo"。相反,添加一个 callbackComponent 来处理令牌和重定向。喜欢以下内容:
const appRoutes: Routes = [
{ path: 'callback', component: CallbackComponent }
]
在回调组件中
export class CallbackComponent implements OnInit {
constructor(private route: ActivatedRoute, private router: Router) {}
public ngOnInit():void {
const token = this.route.snapshot.queryParamMap.get('token');
// Handle token
// ...
this.router.navigate(['./host']);
}
}
不应在 app.component.ts 中处理自动重定向验证,如果是,则通过 guards 处理它,因为它负责重定向。
然后
constructor(private route: ActivatedRoute){}
public ngOnInit():void {
const token = this.route.snapshot.queryParamMap.get('token');
// Handle token
// ...
this.router.navigate(['./host']);
}