我有一个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模块,但不知道它们在我的情况下是否有用。
由于