React Redux和服务器端OAuth 2

时间:2017-06-09 14:59:17

标签: api reactjs redux redux-thunk

我有一个React Redux应用程序,它有一个Node后端用于我的API(也使用Thunk)。我连接的API之一是Strava,它需要OAuth身份验证。

我在后端使用的Strava npm模块具有OAuth功能,因此非常简单。

我在应用上有一个“Connect to Strava”链接,它通过我的Node后端向API发送请求,然后发送回Strava OAuth URL:

const mapDispatchToProps = (dispatch, ownProps) => {
  return {
    onClickAuth: () => {
      store.dispatch(getStravaOauthUrl())
    }
  }
}

单击链接以连接到Strava(如上所述)时,Node会发回生成的URL:

    //action    
    export const getStravaOauthUrl = () => {
          return function(dispatch) {
            dispatch(loadStravaBegin())
            return FitnessApi.fetchStravaOauthUrl().then(strava => {
              dispatch(receivedStravaOauthUrl(strava));
            }).catch(error => {
              throw(error);
            })
          }
        }
export const receivedStravaOauthUrl = (response) => {
  return{
    type: 'RECEIVED_STRAVA_OAUTH_URL',
    response,
    receivedAt: Date.now()
  }
}


    //reducer
    export const fitnessReducer = (state = {
      fitness: {},
      isFetching: true
    }, action) => {
      switch (action.type) {
        case 'RECEIVED_STRAVA_OAUTH_URL':
          return Object.assign({}, state, {
            fitness: {
              oAuthUrl: action.response,
              isFetching: false
            }
          });
        default:
          return state
      }
    }

所以我的商店里有回复。我的问题是,如何将浏览器定向到URL并获得响应?我不确定是否最好使用本机JS重定向或使用React Router来使用某种已建立的进程?

我已经看到很多看起来像客户端OAuth模块,但不知道它们在我的情况下是否有用。

由于

0 个答案:

没有答案