【问题标题】:Using MSAL with React, acquireTokenSilent causes app refresh and fails将 MSAL 与 React 结合使用,acquireTokenSilent 会导致应用刷新并失败
【发布时间】:2018-01-24 16:50:52
【问题描述】:

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

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

相关代码(在 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】:

我相信您的问题与 MSAL.js Issue #106 有关,并且已在“开发”分支中进行了修补。过去几周我一直在与 Microsoft 合作开发这个库,我被告知本周将取消正式版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    相关资源
    最近更新 更多