使用 Angular 重定向 URI 回调后从 URL 获取 OAuth 令牌

lar*_*dam 2 authentication oauth-2.0 angular auth-guard

我将 Angular 应用程序重定向到 Spotify 登录 ( https://accounts.spotify.com/authorize ),一旦他们登录,就会重定向回http://localhost:4200/callback。该 URL 附加了一个令牌。但它立即重定向到(我希望它重定向到这里):

const appRoutes: Routes = [{ path: 'callback', redirectTo: '/host', pathMatch: 'full' }]

如何/在哪里保留身份验证令牌而不将其放在用户 URL 中?

我意识到我最终也需要 AuthGuards,但首先我想检索令牌。

小智 5

我建议你不要直接在路由配置中设置“redirectTo”。相反,添加一个回调组件来处理令牌和重定向。就像下面这样:

const appRoutes: Routes = [
    { path: 'callback', component: CallbackComponent }
]
Run Code Online (Sandbox Code Playgroud)

在回调组件中

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']);
    }
}
Run Code Online (Sandbox Code Playgroud)