J'essaie d'implémenter Google OAuth 2 avec redux saga.Comment gérer le flux Google OAuth via redux-saga
J'ai un guetteur dans ma saga écoute pour une action GOOGLE_AUTH
qui exécute alors googleLogin
function *watchGoogleAuth() {
yield *takeLatest(GOOGLE_AUTH, googleLogin)
}
function *googleLogin() {
const id_token = yield call(GoogleSignIn);
console.log(id_token);
const response = yield call(HttpHelper, 'google_token', 'POST', id_token, null);
console.log(response);
}
La mise en œuvre pour GoogleSignIn
est en apis.js
export function GoogleSignIn() {
const GoogleAuth = window.gapi.auth2.getAuthInstance();
GoogleAuth.signIn({scope: 'profile email'})
.then(
(res) => {
const GoogleUser = GoogleAuth.currentUser.get();
return {
id_token: GoogleUser.getAuthResponse().id_token
};
},
(err) => {
console.log(err)
}
)
}
Mais la saga ne semble pas attendre la GoogleSignIn
pour terminer. Dès que l'écran de consentement OAuth apparaît, saga procède à l'exécution du console.log
sans attendre que google signin promette de retourner les données réelles.
Existe-t-il une meilleure façon de gérer cette situation? Merci!
Fonction GoogleSignIn devrait retourner la promesse –