function getTokenRedirect(request) {
/**
* See here for more info on account retrieval:
* https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/Accounts.md
*/
request.account = myMSALObj.getAccountByUsername(username);
return myMSALObj.acquireTokenSilent(request)
.catch(error => {
console.error(error);
console.warn("silent token acquisition fails. acquiring token using popup");
if (error instanceof msal.InteractionRequiredAuthError) {
// fallback to interaction when silent call fails
return myMSALObj.acquireTokenRedirect(request);
} else {
console.error(error);
}
});
}
1条答案
按热度按时间5anewei61#
模式确实是这样的。在向API发出请求之前,您应该调用acquireTokenSilent()函数,看看是否可以静默检索到合适的令牌。该函数将执行以下操作:
如果两个选项都失败,则会抛出InteractionRequiredAuthError,您需要捕获并触发acquireTokenRedirect()(或acquireTokenPopup())。
您可以看到下面的普通JS MSAL示例:https://github.com/Azure-Samples/ms-identity-javascript-tutorial/tree/main/3-Authorization-II/1-call-api
检查getTokenRedirect()函数: