react-native-google-signin/google-signin

Error during login: [TypeError: Cannot read property 'user' of undefined]

Closed this issue · 1 comments

So I'm trying to use Google Sign In with Firebase
This is my code:

`
GoogleSignin.configure({
androidClientId: "myAndroidCliendId",
});

export async function googleSignIn() {
try {
await GoogleSignin.hasPlayServices({ showPlayServicesUpdateDialog: true });
const { idToken, accessToken } = await GoogleSignin.signIn({
prompt: "select_account",
});
const googleCredential = auth.GoogleAuthProvider.credential(idToken, accessToken);
const userSignIn = await auth().signInWithCredential(googleCredential);

return userSignIn;

} catch (error) {
console.log("Error during login (function):", error);
}
}`

This is my Login Screen:
`import { TouchableOpacity, StyleSheet, View, Text, Image } from "react-native";
import React, { useContext, useState } from "react";

import { AuthContext } from "../contexts/AuthProvider";
import { storeUserData, fetchUserData } from "../firebase/users";
import { googleSignIn } from "../firebase/googleSignIn";
import LoadingOverlay from "../components/LoadingOverlay";
import SignInAnonymously from "../components/SignInAnonymously";

function SignInScreen() {
const [isFetching, setIsFetching] = useState(false);
const authContext = useContext(AuthContext);

async function onGoogleButtonPress() {
try {
setIsFetching(true);
const userSignIn = await googleSignIn();

  console.log(userSignIn)
  const userData = {
    uid: userSignIn.user.uid,
    role: "guest",
    name: userSignIn.user.displayName,
    picture: userSignIn.user.photoURL,
    email: userSignIn.user.email,
    isOnline: false,
    chatRooms: [],
  };
  console.log("User data", userData);

  if (userSignIn.additionalUserInfo.isNewUser === true) {
    console.log("New user");
    authContext.setUser(userData);
    await storeUserData(userData);
  } else {
    authContext.setUser(useData);
    const useData = await fetchUserData(userSignIn.user.uid);
  }

  setIsFetching(false);
} catch (error) {
  setIsFetching(false);
  console.log("Error during login:", error);
}

}
if (isFetching === true) return ;

return (

  <View style={styles.signInContainer}>
  <SignInAnonymously />
    <TouchableOpacity style={styles.button} onPress={onGoogleButtonPress}>
      <View style={{ flexDirection: "row" }}>
        <Text style={styles.buttonText}>Sign in with </Text>
        <Text style={[styles.buttonText, { color: "#2191FB" }]}>Google</Text>
      </View>
    </TouchableOpacity>
  </View>
</View>

);
}

const styles = StyleSheet.create({

container: {
flex: 1,
backgroundColor: "whitesmoke",
alignItems: "center",
},
signInContainer: {
marginTop: 30,
alignItems: "center",
},
button: {
// backgroundColor: 'white',
padding: 10,
borderRadius: 5,
marginTop: 50,
},
buttonText: {
fontSize: 25,
fontFamily: "Arial",
// fontWeight: "bold",
},
});

export default SignInScreen;
`

I get:

LOG Error during login (function): [Error: DEVELOPER_ERROR] LOG undefined LOG Error during login: [TypeError: Cannot read property 'user' of undefined]

Environment

"react": "18.2.0",
"react-native": "0.74.1",
"@react-native-firebase/app": "^19.2.2",
"@react-native-firebase/auth": "^19.2.2",
"@react-native-firebase/firestore": "^19.2.2",
"@react-native-google-signin/google-signin": "^11.0.1",
"Android Emulator" : Pixel_3a_API_34_extension_level_7_x86_64

Please help!