Не получается получить токен с помощью 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 может обрабатывать токен обновления.

Другие вопросы по тегам