I develop application by react native and using rnfirebase to connect with google firebase authentication. I have sign in code by google button like this.
const _signIn = async () => {
setInitializing(true);
try {
await GoogleSignin.hasPlayServices();
const userInfo = await GoogleSignin.signIn();
const credential = auth.GoogleAuthProvider.credential(
userInfo.idToken,
userInfo.accessToken,
);
return auth()
.signInWithCredential(credential)
.then(response => {
const uid = response.user.uid;
const data = {
uid: uid,
email: userInfo.user.email,
fullname: userInfo.user.name,
bio: 'I am ok ..',
username: uid.substring(0, 8),
};
const usersRef = firestore().collection('users');
usersRef
.doc(uid)
.get()
.then(firestoreDocument => {
if (!firestoreDocument.exists) {
usersRef
.doc(data.uid)
.set(data)
.then(() => {
RNRestart.Restart();
})
.catch(error => {
setInitializing(false);
Alert.alert(JSON.stringify(error.message));
});
} else {
setInitializing(false);
}
})
.catch(error => {
Alert.alert(JSON.stringify(error.message));
console.log('Error getting document:', error);
});
});
} catch (error) {
if (error.code === statusCodes.SIGN_IN_CANCELLED) {
setInitializing(false);
Alert.alert('Sign in canceled');
} else if (error.code === statusCodes.IN_PROGRESS) {
setInitializing(false);
Alert.alert('Signin in progress');
} else if (error.code === statusCodes.PLAY_SERVICES_NOT_AVAILABLE) {
setInitializing(false);
Alert.alert('PLAY_SERVICES_NOT_AVAILABLE');
} else {
setInitializing(false);
Alert.alert(JSON.stringify(error.message));
}
} };
In IOS, when i signin as new / registered user, application always display google signin page. So I Can choose which account that I want to use. Like this:
But In Android, Google Signin page Only show for the first time user signin. After that, if user logout from application, and he want to login again by google button, user directly go to main application with last gmail. So In android, I can not switch / use another account if I have sign in before.
How can I show google sign in page every time user sign in by google button in android? Thankyou.
In your logout function, if the user is logged in through Google, you need to implement the google sign out function:
GoogleSignin.signOut();
A better approach is to also revoke the access, so the complete sign out function could be:
await GoogleSignin.revokeAccess();
await GoogleSignin.signOut();