Ошибка AcquireTokenSilent при использовании msal.js

Я использую поток перенаправления для выполнения потока аутентификации, но иногда после входа в систему перенаправление встречает отмененный процесс, когда acquTokenSilent

вот мой процесс входа в систему

public async componentDidMount() {

    msalApp.handleRedirectCallback(error => {
      if (error) {
        const errorMessage = error.errorMessage ? error.errorMessage : "Unable to acquire access token.";
        // setState works as long as navigateToLoginRequestUrl: false
      }
    });

    if (!msalApp.getAccount()) {
      if (isMobile) {
        msalApp.loginRedirect(GRAPH_REQUESTS.CDA);
      }
      else {
        const response = await msalApp
          .loginPopup(GRAPH_REQUESTS.CDA)
          .catch(error => {
            ;
          });
        console.log("after login" + response);
        this.props.onFetchTemplate();
      }
    } else { this.props.onFetchTemplate(); }
  }

получить функцию токена доступа

export const getTokenRedirect = (): Promise<string> => {
    return new Promise((resolve, reject) => {
        msalApp.acquireTokenSilent({
            scopes: [GRAPH_SCOPES.SITE_TEMPLATE]//,loginHint: JSON.parse((JSON.stringify(msalApp.getAccount(), null, 4))).name
        })
            .then(resp => resolve(resp.accessToken)).catch(error => {
                if (requiresInteraction(error.errorCode)) {
                    msalApp.acquireTokenRedirect(GRAPH_REQUESTS.CDA);
                }
            });
    });
};

а также мой конфиг

export const authRedirect = {
    clientId: "****",
    authority: "https://login.microsoftonline.com/tennatid",
    validateAuthority: true,
    postLogoutRedirectUri: "https://myweburl",
    navigateToLoginRequestUrl: false
};

export const msalApp = new UserAgentApplication({
    auth: isMobile == true ? authRedirect : auth,
    cache: {
        cacheLocation: "sessionStorage",
        storeAuthStateInCookie: isIE()
    },
    system: {
        navigateFrameWait: 0
    }
});

и эта ошибка происходит, я думаю, процесс авторизации при получении токена отменен MS. Я не мог воспроизвести его на localhost.

0 ответов

Другие вопросы по тегам