微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不是使用acquireTokensilent 获取令牌而是使用acquireTokenpopup Msal-browser 获取令牌

如何解决不是使用acquireTokensilent 获取令牌而是使用acquireTokenpopup Msal-browser 获取令牌

我正在将 MSAL 1.x 版更新为 angular 中的 MSAL 浏览器。所以我正在尝试从 1.x 版迁移 到 2.X.I 能够成功替换代码并且工作正常。但是我遇到了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,它工作正常我不明白是什么问题。

解决方法

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

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

之前是这样给的:request= { scopes: ['profile'] };添加一行用户帐户作为帐户:msalobj.getAllAccounts()[0]

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。