如何在React / Redux / OIDC中正确获取用户信息

时间:2019-05-19 18:47:43

标签: javascript reactjs redux oidc

OIDC刚起步-过去我已经做了一些工作,但无论如何我都不会称自己为专家。

我正在尝试使用oidc-client-js和redux-oidc库(以及redux-oidc-example示例)在React应用中使用OIDC

我收到此错误:

错误:在存储中找不到匹配状态     在评估时(oidc-client.min.js:1011)

现在,我一直在寻找解决方案,这是我所遇到的最接近的问题,但是在这里我仍然找不到任何能清楚说明问题的东西:

https://github.com/IdentityModel/oidc-client-js/issues/648

这是我的回调函数:

const successCallback = (user) => {
  this.props.dispatch(push("/settings"))
};


class CallbackPage extends React.Component {
  render() {
    return (
      <CallbackComponent
        userManager={userManager}
        successCallback={successCallback}
        errorCallback={error => {
          //this.props.dispatch(push("/chat"));
          console.error(error);
        }}
        >
        <div>Redirecting TEST...</div>
      </CallbackComponent>
    );
  }
}

export default connect()(CallbackPage);

在错误回调中注释掉props.dispatch之前,这是一个永无止境的循环。现在,它随我在错误回调中输入的内容一起冻结在回调页面上。

我不会放置完整的userManager设置,因为这似乎太过分了,但这是一些主要亮点:

{
    "authority": "https://subdomain.appname.com/auth/realms/appname/",
    "client_id": "appname-app",
    "redirect_uri": "http://localhost:3001/callback",
    "response_type": "code",
    "extraQueryParams": {"kc_idp_hint": "google"},
    "loadUserInfo": true,
    "scope": ["openid", "profile", "email"]
}

我不确定还有什么对故障排除人员有帮助的-如果需要,我可以提供store.js信息或主应用程序index.js。

2 个答案:

答案 0 :(得分:0)

尝试一下。

class CallbackPage extends React.Component {

successCallback = (user) => {
  this.props.dispatch(push("/settings"))
};

  render() {
    return (
      <CallbackComponent
        userManager={userManager}
        successCallback={this.successCallback}
        errorCallback={error => {
          //this.props.dispatch(push("/chat"));
          console.error(error);
        }}
        >
        <div>Redirecting TEST...</div>
      </CallbackComponent>
    );
  }
}

export default connect()(CallbackPage);

答案 1 :(得分:0)

用户meneger的范围参数应该是空格分隔的字符串而不是数组。

示例:'openid profile email'