angularjs - 未使用 acquireTokensilent 获取 token ,但使用 acquireTokenpopup Msal-browser 获取 token

标签 angularjs azure-active-directory msal azure-ad-graph-api msal-angular

我正在将 MSAL 版本 1.x 更新为 MSAL-browser 的 Angular 。所以我正在尝试从版本 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 可以处理刷新 token 。

关于angularjs - 未使用 acquireTokensilent 获取 token ,但使用 acquireTokenpopup Msal-browser 获取 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67385531/

相关文章:

c# - 通过 Rest Call 查询 Windows Azure Active Directory Graph Api

angular - 如何在 Angular6+ 应用程序中使用 PKCE 实现授权代码授予

c# - 带有 JWT token 的 Azure AD Multi-Tenancy 、.Net Core Web API

javascript - html5 电话链接在 iOS 上触发了两次

javascript - 异步函数调用后从工厂返回 Angular $resource

javascript - Grunt复制/ Ant 模式/省略变量目录

azure-ad-b2c - 天蓝色 B2C 继承错误

javascript - 使用函数通过 $routeProvider 定义 Controller

azure - 使用 Azure AD 登录用户

office365 - 访问 Office365 中的 Exchange CustomAttribute1