BrowserAuthError:interaction_in_progress:当前正在进行与 azuremsal-browser@2.11.2 的交互

reactjs

1个回答

写回答

烦恼滴汤圆

2025-07-04 08:45

+ 关注

Java
Java

解决BrowserAuthError:interaction_in_progress错误

在使用 Azure Active Directory (Azure AD) 进行身份验证时,开发人员可能会遇到 BrowserAuthError:interaction_in_progress 错误。这个错误通常会发生在与 azure/msal-browser@2.11.2 进行交互的过程中。这篇文章将为您介绍如何解决这个错误,并提供一个案例代码来帮助您更好地理解。

什么是BrowserAuthError:interaction_in_progress错误?

当您使用 Azure AD 进行身份验证时,可能需要与 Azure AD 进行交互以完成身份验证流程。然而,在某些情况下,您可能会遇到 BrowserAuthError:interaction_in_progress 错误。这个错误表示当前正在进行与 azure/msal-browser@2.11.2 的交互,但在此之前已经有一个交互正在进行中。这可能是由于在同一个浏览器会话中同时进行了多个身份验证请求引起的。

如何解决BrowserAuthError:interaction_in_progress错误?

解决 BrowserAuthError:interaction_in_progress 错误的方法是确保在进行下一个交互之前,先关闭之前的交互。为了实现这个目标,可以采取以下几个步骤:

1. 检查是否已经有一个交互正在进行中:在代码中,可以通过检查是否存在正在进行的交互来判断是否已经有一个交互正在进行中。例如,您可以在调用身份验证方法之前,检查是否存在一个正在进行的交互。

Javascript

import { PublicClientApplication } from '@azure/msal-browser';

const msalConfig = {

auth: {

clientId: 'your_client_id',

authority: 'https://login.microsoftonline.com/your_tenant_id',

redirectUri: 'http://localhost:3000'

}

};

const msalInstance = new PublicClientApplication(msalConfig);

// 检查是否存在正在进行的交互

if (msalInstance.getAllAccounts().length > 0 && msalInstance.getActiveAccount()) {

// 如果存在正在进行的交互,则关闭它

msalInstance.logout();

}

// 进行新的交互

msalInstance.loginPopup().then(response => {

// 处理登录成功的逻辑

}).catch(error => {

// 处理错误的逻辑

});

2. 关闭之前的交互:如果存在正在进行的交互,您可以通过调用 msalInstance.logout() 方法来关闭它。这将中止之前的交互,并允许您进行新的交互。

3. 进行新的交互:在关闭之前的交互后,您可以继续进行新的交互。这可以是弹出式登录、重定向登录或其他身份验证方法,具体取决于您的需求。

案例代码

下面是一个示例代码,演示了如何解决 BrowserAuthError:interaction_in_progress 错误。

Javascript

import { PublicClientApplication } from '@azure/msal-browser';

const msalConfig = {

auth: {

clientId: 'your_client_id',

authority: 'https://login.microsoftonline.com/your_tenant_id',

redirectUri: 'http://localhost:3000'

}

};

const msalInstance = new PublicClientApplication(msalConfig);

// 检查是否存在正在进行的交互

if (msalInstance.getAllAccounts().length > 0 && msalInstance.getActiveAccount()) {

// 如果存在正在进行的交互,则关闭它

msalInstance.logout();

}

// 进行新的交互

msalInstance.loginPopup().then(response => {

// 处理登录成功的逻辑

}).catch(error => {

// 处理错误的逻辑

});

通过遵循上述步骤,您可以解决 BrowserAuthError:interaction_in_progress 错误,并成功进行与 azure/msal-browser@2.11.2 的交互。请记住,在进行新的交互之前,始终检查是否存在正在进行的交互,并在必要时关闭它。希望本文对您解决这个错误有所帮助!

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号