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();}