Firebase Google登录不持久

Firebase Google登录不持久,firebase,react-native,firebase-authentication,react-native-firebase,Firebase,React Native,Firebase Authentication,React Native Firebase,我正在开发一个应用程序,通过Firebase使用googlelogin功能。我正试图在一个名为react native Google-sign的库的帮助下通过谷歌登录。它是谷歌登录ReactNative领域的著名库 我的问题不在于这个库,而是当我使用react native google signlibrary with firebase通过谷歌登录时。Firebase用户没有保持持久性,我的意思是当我在关闭Firebase用户后打开应用程序时,会得到null。下面是我通过firebase登录时

我正在开发一个应用程序,通过
Firebase
使用
googlelogin
功能。我正试图在一个名为
react native Google-sign
的库的帮助下通过谷歌登录。它是谷歌登录ReactNative领域的著名库

我的问题不在于这个库,而是当我使用
react native google sign
library with firebase通过谷歌登录时。Firebase用户没有保持持久性,我的意思是当我在关闭
Firebase用户
后打开应用程序时,会得到
null
。下面是我通过firebase登录时使用的代码

GoogleSignin.signIn().then(data => { 
const credentials = firebase.auth.GoogleAuthProvider.credential(data.idToken, data.accessToken);

firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL)
.then() => { 

    return firebase.auth().signInWithCredential(credentials);
}).catch(error => {

    console.log('Error', error);
})

}).then(user => {

   console.log('user', firebase.auth().currentUser);
}).catch(error => {

   console.log('Error', error);
})
我还检查了Firebase文档,尝试使用
setPersistence()
方法,但在再次打开应用程序后,我仍然得到
null
用户。

您可以尝试此方法

当你第一次打开你的应用程序时,你会得到
user
null,但在登录一次后,然后重新打开你的应用程序,你会在控制台中得到以前登录的用户

async _setupGoogleSignin() {
try {
  await GoogleSignin.hasPlayServices({ autoResolve: true });
  await GoogleSignin.configure({
    webClientId: 'YOUR WEBCLIENTID',
    offlineAccess: false
  });
  const user = await GoogleSignin.currentUserAsync();
  console.log("user",user); // HERE YOU GET LOGGED IN USER IN YOUR CONSOLE FIRST TIME IT WILL BE NULL BUT AFTER YOU GET PREVIOUSLY LOGGED IN USER
  this.setState({user});
}
catch(err) {
  console.log("Play services error", err.code, err.message);
}}
然后

它对我有用。。。
希望它能帮助您……

您可能没有使用
onAuthStateChanged
侦听器来检测初始身份验证状态。这是检测用户是否在首次应用程序启动时登录的正确方法。那么,这里使用的GoogleSignIn api在哪里存储登录信息呢。当应用程序重新启动时(提前终止后),它如何知道并获取以前的登录详细信息
_signIn() {
GoogleSignin.signIn()
.then((user) => {
  console.log(user);
  this.setState({user: user});
  const credential = firebase.auth.GoogleAuthProvider.credential(user.idToken, user.accessToken);
  // console.log(credential);
  return firebase.auth().signInAndRetrieveDataWithCredential(credential);
})
.catch((err) => {
  console.log('WRONG SIGNIN', err);
})
.done();}