在反应中使用MSAL,acquireTokenSilent导致应用程序刷新并失败

问题描述:

我遇到了MSAL(x)工作出现问题 - 登录弹出成功,但是当我尝试使用​​从id令牌中检索并访问令牌时,它会导致应用程序重新加载(所有资源,每个开发工具网络选项卡),并引发错误“由于超时:令牌更新操作失败:null”。我已经搜索了相关的SO问题/谷歌,但没有运气发现类似的问题。疯狂的事情是,它有一天工作,刚刚停止 - 即使恢复到相同的代码不能解决问题。在反应中使用MSAL,acquireTokenSilent导致应用程序刷新并失败

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

相关代码(在一个阵营组件单击处理):

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); 
     }); 
} 
+0

我现在也有同样的问题。你能解决这个问题吗? –

+0

排序 - 就像它有一天工作,下一个没有,它再次工作的那一天,没有代码的变化。我认为这是他们的一个问题,因为我的结局没有变化。 –

我相信你的问题涉及到MSAL.js Issue #106,而“开发”分支内修补。过去几周,我一直在与这家图书馆的微软合作,并且我被告知本周正式发布的版本将会被削减。