Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
BrowserAuthErrors
Interação_em_curso
Mensagem de Erro: A interação está atualmente em andamento. Por favor, certifique-se de que esta interação foi concluída antes de chamar uma API interativa.
Este erro é lançado quando uma API interativa (loginPopup, loginRedirect, acquireTokenPopup, acquireTokenRedirect) é invocada enquanto outra API interativa ainda está em andamento. As APIs login e acquireToken são assíncronas, pelo que terá de garantir que as promessas resultantes tenham sido resolvidas antes de invocar outra API.
Existem @azure/msal-angular 2 cenários comuns em que isto pode acontecer:
- A sua aplicação não está a tratar corretamente os redirecionamentos. O erro ocorre então quando a aplicação ou o utilizador tentam chamar uma API interativa.
- A sua aplicação está a chamar uma das APIs acima sem verificar primeiro se a interação já está em curso noutro local.
Os redirecionamentos devem ser tratados com o MsalRedirectComponent ou chamando o handleRedirectObservable(). Não tratar explicitamente os redirecionamentos com qualquer uma destas duas abordagens resultará no erro acima. Consulte a nossa documentação sobre redirecionamentos aqui para mais informações sobre ambas as abordagens.
Além disso, qualquer interação deve ser efetuada após a subscrição do observável inProgress$ e a filtragem por InteractionStatus.None. Tentar interagir enquanto outro está em curso não é suportado e resultará no erro acima. Verificar InteractionStatus.None é a forma de garantir que isto não acontece. Por favor, consulte o nosso documento de eventos para mais detalhes.
Por favor, consulte o @azure/msal-browser documento de erro para mais informações sobre este erro.
❌ O exemplo seguinte irá gerar este erro quando outro componente já tiver invocado uma API interativa em andamento:
import { Component, OnInit } from '@angular/core';
import { MsalService, MsalBroadcastService, InteractionStatus } from '@azure/msal-angular';
import { filter } from 'rxjs/operators';
@Component()
export class ExampleComponent implements OnInit {
constructor(
private msalBroadcastService: MsalBroadcastService,
private authService: MsalService
) {}
ngOnInit(): void {
this.authService.loginRedirect();
}
✔️ Para corrigir o exemplo anterior, verifique se não há outra interação em curso antes de loginRedirectinvocar :
import { Component, OnInit } from '@angular/core';
import { InteractionStatus } from '@azure/msal-browser';
import { MsalService, MsalBroadcastService } from '@azure/msal-angular';
import { filter } from 'rxjs/operators';
@Component()
export class ExampleComponent implements OnInit {
constructor(
private msalBroadcastService: MsalBroadcastService,
private authService: MsalService
) {}
ngOnInit(): void {
this.msalBroadcastService.inProgress$
.pipe(
filter((status: InteractionStatus) => status === InteractionStatus.None),
)
.subscribe(() => {
this.authService.loginRedirect();
})
}
Passos de Resolução de Problemas
- Ative o registo detalhado e trace a ordem dos eventos. Verifique se uma API interativa não é invocada antes de outra ter sido resolvida.
- Se estiver a usar o fluxo de redirecionamento, certifique-se de que
MsalRedirectComponeté inicializado corretamente ou de quehandleRedirectObservableé chamado em todas as páginas para as quais possa haver redirecionamento.
Se não conseguir perceber porque é que este erro está a ser lançado, por favor abra uma consulta e esteja preparado para partilhar a seguinte informação:
- Registos verbosos
- Uma aplicação de exemplo e/ou excertos de código que possamos usar para reproduzir o problema
- Atualize a página. O erro desaparece?
- Abra a sua aplicação num novo separador. O erro desapareceu?