Не получается получить токен с помощью acquTokensilent, но получить токены с помощью acquTokenpopup Msal-browser
Я обновляю MSAL версии 1.x до MSAL-браузера в angular. Поэтому я пытаюсь перейти с версии 1.x на 2.X. Мне удалось успешно заменить код, и он работает нормально. но у меня возникают проблемы с acquTokenSilent, но он работает нормально при использовании acquTokenPopup. Я перехожу по этой ссылке:https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/v1-migration.md . Это последняя библиотека, опубликованная всего 11 дней назад, и я не могу получить много информации из Интернета, кроме базовой документации. Дело в том, что когда я использую acquTokenSilent, он выдает ошибку как:getTokenerror BrowserAuthError: no_account_error: объект учетной записи не предоставлен для acquTokenSilent и активная учетная запись не была установленано если я использую acquTokenPopup в том же месте, мое приложение работает. Образец:
public Tokenfunction(): void {
this.MSALobject.acquireTokenSilent(request).then(response => {
this.tokenSubject.next(response.idToken);
})
.catch((error: msal.AuthError) => {
if (error) {
return this.login();
}
somefunction();
});
}
но вместо acquTokenSilent, если я использую acquTokenPopup, он работает нормально, я не понимаю, в чем проблема.
1 ответ
Обобщите комментарии в ответ, чтобы заархивировать этот вопрос:
Предоставление объекта учетной записи в запросе может решить эту проблему.
Раньше давали так:
request= { scopes: ['profile'] }
; Добавьте еще одну строку с учетной записью пользователя в качестве учетной записи:
msalobj.getAllAccounts()[0]
.
Я думаю, тебе не нужно справляться с этим самостоятельно, потому что
acquireTokenSilent
может обрабатывать токен обновления.