令牌无效,状态不匹配 - 仅限 Auth0 错误 Safari

Invalid token, state does not match - Auth0 Error Safari only

在 Safari 中使用 Auth0 库中的 parseHash 函数时出现错误

相同的代码在 chrome 中运行良好。可以做些什么来解决这个问题?

handleAuthentication = (onSuccessCallback, onErrorCallback) => {
    console.log('handle auth', this.authservice);
    this.authservice.parseHash((err, authResult) => {
      console.log('authresult inside', authResult, 'error', err);
      if (authResult && authResult.accessToken && authResult.idToken) {
        this.setSession(authResult, onSuccessCallback);
      } else if (err) {
        // onErrorCallback();
      }
    });
  };

经过大量的研究和文章探索,我终于找到了解决这个问题的办法。 由于 auth0 无法访问转发检查登录详细信息所需的 statenonce 参数,因此我们可以手动将其添加到身份验证流程中工作没有任何问题。

login = () => {
    this.authservice.authorize(
      {
        nonce: ${randomString},
        state: ${randomString},
      }
    );
  }

handleAuthentication = (onSuccessCallback, onErrorCallback) => {
  this.authservice.parseHash(
    {nonce: ${randomString}, state: ${randomString},
      (err, result) => {
        // some code
       }
     );
   };

希望它对你也有用!!