我一直在尝试从Angular的MSAL获取访问令牌,但似乎使自己陷入困境,并希望有人可以清除这样做的正确过程。
我目前正在使用以下内容尝试获取令牌。
this.msal.acquireTokenSilent({ scopes }).then((response) => {
console.log(response.accessToken);
});
}, (error) => {
if (error instanceof ClientAuthError) {
this.msal.loginRedirect({ scopes });
}
if (error instanceof InteractionRequiredAuthError) {
this.msal.acquireTokenRedirect({ scopes });
}
if (error instanceof HttpErrorResponse && error.status === 401) {
this.msal.acquireTokenRedirect({ scopes });
}
});
如果您登录到Azure,此方法有效,但是如果您未登录,则它会落入ClientAuthError并将您重定向到登录。登录后,您将重定向到原始页面,需要再次单击相同的登录按钮。
是否有一种方法可以在登录时获取访问令牌,而不必先登录然后再调用AcquisitionTokenSilent?
答案 0 :(得分:0)
默认情况下,如果您调用Acquisitiontokenredirect,它将进行第二次重定向。这会使您在第二个重定向中丢失“令牌”。您可以做的是通过在身份验证配置中将“ navigateToLoginRequestUrl”设置为false来阻止其进行第二次重定向。那么您应该能够获取并使用令牌。