0

我正在更新 MSAL 版本 1.x 到 MSAL 浏览器的角度。所以我试图从版本 1.x 迁移到 2.XI 能够成功替换代码并且它工作正常。但是我遇到了acquireTokenSilent的问题,但是使用acquireTokenPopup可以正常工作。我正在关注此链接: https ://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/v1-migration.md 。这是仅在 11 天前发布的最新库,除了基本文档之外,我无法从互联网上获得太多输入。问题是当我使用acquireTokenSilent时,它给出的错误为: getTokenerror BrowserAuthError:no_account_error:没有提供给acquireTokenSilent的帐户对象并且没有设置活动帐户 但如果我在同一个地方使用acquireTokenPopup,我的应用程序正在工作。样本:

public Tokenfunction(): void {
    this.MSALobject.acquireTokenSilent(request).then(response => {
       this.tokenSubject.next(response.idToken);
    })
    .catch((error: msal.AuthError) => {
      if (error) {
        return this.login();
      }
       somefunction();
      
    });
  }

但是如果我使用acquireTokenPopup,而不是acquireTokenSilent,它的工作正常我没有得到什么问题。

4

1 回答 1

1

将评论汇总到答案中以存档此问题:

在请求中提供帐户对象可以解决此问题。

早些时候是这样给予的request= { scopes: ['profile'] }:再添加一行用户帐户作为帐户:msalobj.getAllAccounts()[0]

我认为您不需要自己处理它,因为acquireTokenSilent可以处理刷新令牌。

于 2021-05-19T10:51:08.930 回答