未使用 acquireTokensilent 获取令牌,但使用 acquireTokenpopup Msal-browser 获取令牌
Not getting token with acquireTokensilent but getting tokens with acquireTokenpopup Msal-browser
我正在将 MSAL 版本 1.x 更新到 angular.So 中的 MSAL 浏览器 我正在尝试从版本 1.x 迁移
to 2.X.I 能够成功替换代码并且工作正常。但是我遇到了 acquireTokenSilent 的问题,但是通过使用 acquireTokenPopup 可以正常工作。我正在关注这个 link:
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
可以处理刷新令牌。
我正在将 MSAL 版本 1.x 更新到 angular.So 中的 MSAL 浏览器 我正在尝试从版本 1.x 迁移 to 2.X.I 能够成功替换代码并且工作正常。但是我遇到了 acquireTokenSilent 的问题,但是通过使用 acquireTokenPopup 可以正常工作。我正在关注这个 link: 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
可以处理刷新令牌。