将MSAL与React一起使用,acquireTokenSilent会导致应用刷新并失败

问题描述 投票:5回答:1

我在使MSAL(x)工作时遇到问题 - 登录弹出成功,但是当我尝试使用acquireTokenSilent从id令牌检索和访问令牌时,它会导致应用程序重新加载(所有资源,每个开发工具网络选项卡),以及抛出错误'令牌更新操作因超时失败:null'。我搜索了相关的SO问题/谷歌,但没有找到类似的问题。疯狂的是,它在前几天工作并且刚刚停止 - 即使恢复到相同的代码也无法解决问题。

在silent的错误处理程序中使用acquireTokenPopup会显示一个弹出窗口,但不允许使用同一个用户登录(“我们无法识别此域名”),但会显示正确的MS App名称。这真让我抓狂。

相关代码(在React组件单击处理程序中):

onMSLogin() {
    const {  msLoginFailure } = this.props;
    const userAgentApplication = this.userAgentApplication;
    userAgentApplication.loginPopup(['user.read'])
      .then(function () {
        console.log('User login success');
        const scopes = ['User.Read'];
        userAgentApplication.acquireTokenSilent(scopes).then((accessToken) => {
          console.log('Access token acquired (silent): ', accessToken);
          this.getGraphData(accessToken);
        }, (error) => {
          console.error('Silent token fail: ', error);
          userAgentApplication.acquireTokenPopup(scopes).then((accessToken) => {
            console.log('Access token acquired (popup): ', accessToken);
          });
        })
      }, function (error) {
        // handle error
        console.log('MS Login Failure: ', error);
        if (msLoginFailure) msLoginFailure(error);
      });
}
javascript reactjs msal
1个回答
0
投票

我相信你的问题与MSAL.js Issue #106有关,并在'dev'分支内修补。过去几周我一直在微软与这家图书馆合作,而且我被告知本周将正式发布官方版本。

© www.soinside.com 2019 - 2024. All rights reserved.