I have used context api to manage the user login state .I also used firebase auth persistance to keep the user logged in after page reload but it isn't working :/ In my session storage the user info is getting saved but after page reload user is automatically logged out of the application.
loginContext.js
export const LoginContext = createContext();
const LoginContextProvider = ({ children }) => {
const [loggedInUser, setLoggedInUser] = useState({});
return (
<LoginContext.Provider value={[loggedInUser, setLoggedInUser]}>
{children}
</LoginContext.Provider>
);
};
Login.js
const gmailProvider = new firebase.auth.GoogleAuthProvider();
const handleGmailSignIn = () => {
firebase
.auth()
.setPersistence(firebase.auth.Auth.Persistence.SESSION)
.then(() => {
firebase
.auth()
.signInWithPopup(gmailProvider)
.then((result) => {
const { displayName, email, photoURL } = result.user;
const signedInUser = {
isSignedIn: true,
name: displayName,
email: email,
photoURL: photoURL,
};
// setUserToken();
setLoggedInUser(signedInUser);
history.replace(from);
console.log(displayName, email);
});
})
.catch((error) => {
// Handle Errors here.
const errorCode = error.code;
const errorMessage = error.message;
// The email of the user's account used.
const email = error.email;
// The firebase.auth.AuthCredential type that was used.
const credential = error.credential;
// ...
});
};