谷歌身份验证工作,但未显示在仪表板上

问题描述 投票:0回答:1

我正在制作一个带有 expo 的应用程序,我想使用电子邮件/密码或使用谷歌在应用程序中进行身份验证。

我使用此代码添加了电子邮件和密码身份验证:

// this is the function for initiating firebase
function init_firebase(){
  const firebaseConfig = {
    apiKey: ' AIzaSyCs-qNMrjikN5VqKdY737K22QSsT9MmtGI ',
    authDomain: 'tiod-app.firebaseapp.com',
    databaseURL: 'https://tiod-app-default-rtdb.europe-west1.firebasedatabase.app/',
    projectId: 'tiod-app',
    appId: '1:659850692368:android:bf812065131d214dfb0795',
  };
  const app = initializeApp(firebaseConfig);
  const auth = initializeAuth(app, {
    persistence: getReactNativePersistence(ReactNativeAsyncStorage)
  });
  return {app, auth};
}
export const firebase = init_firebase();

// the function for signing up
async function Signup_email(navigation: NavigationProp<ParamListBase>, email: string, password: string){
    const login = await createUserWithEmailAndPassword(firebase.auth, email, password).catch((e) => {
      console.log(e);
    });
    if (login){return;}
    navigation.navigate('Main', {email});
}
// the function for logging in
async function Login_email(navigation: NavigationProp<ParamListBase>, email: string, password: string,
){
  const app = firebase;
  if (!app){return;}
  const login = await signInWithEmailAndPassword(app.auth, email, password).catch((e) => {console.log(e)});
  if (!login){return;}
  navigation.navigate('Loading', login.user.toJSON());
}

并且效果很好,但是对于谷歌身份验证,我意识到用于重定向登录的函数(

signInWithRedirect
)是未定义的,因为它会影响 DOM。

所以我用

@react-native-google-signin/google-signin
尝试做同样的事情。我设法 使用谷歌使用此代码登录:

async function Login_google(navigation: NavigationProp<ParamListBase>){
  const result = await GoogleSignin.signIn().catch((e) => {console.log(e)});
  if (!result){return;}
  navigation.navigate('Loading', result.user);
}

另外,我在 main 中配置了 google 登录

    GoogleSignin.configure({webClientId: "659850692368-bf2itlqkbbroq5cd3e8lq969qtk8ks5i.apps.googleusercontent.com",
        googleServicePlistPath: "../GoogleService-Info.plist",
    })

但是由于某种原因,使用 google 登录后firebase 中的用户仪表板仍然是空的

firebase react-native firebase-authentication expo google-signin
1个回答
0
投票

使用google登录登录后,您还需要使用

GoogleAuthProvider.credential
登录google。

这是我修复身份验证功能的方法:

async function Login_google(navigation: NavigationProp<ParamListBase>){
  const login = await GoogleSignin.signIn();
  const credential = GoogleAuthProvider.credential(login.idToken);
  const result = await signInWithCredential(firebase.auth, credential);
  navigation.navigate('Loading', result.user.toJSON());
}
© www.soinside.com 2019 - 2024. All rights reserved.