Collin
Collin

Reputation: 497

firebase.auth().onAuthStateChanged Not Working

I'm trying to build a website that uses email auth for users. However, everytime I try to sign up or log in a user, the firebase.auth().onAuthStateChanged function fires, but doesn't recognize that a user has logged in or signed up. This is my current code. I know it works because it will alert me, "No user!" after every log in or sign up and because I can go into my Firebase console and see that the user has signed up. If anyone knows how to fix this, I would appreciate it!

Thanks!

Code:

 function initApp() {
  firebase.auth().onAuthStateChanged(function(user) {
    if (user) {
      alert("Signed in user!")
    } else {
      alert("No user!")
    }
  });
}

window.onload = function() {
  initApp();
};

CODE FOR LOGIN & SIGNUP:

function toggleSignIn() {
  if (firebase.auth().currentUser) {
   alert("Sign out")
    firebase.auth().signOut();
    // [END signout]
  } else {
    var email = document.getElementById('email').value;
    var password = document.getElementById('pass').value;
    if (email.length < 4) {
      alert('Please enter an email address.');
      return;
    }
    if (password.length < 4) {
      alert('Please enter a password.');
      return;
    }
    // Sign in with email and pass.
    // [START authwithemail]
    firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
      // Handle Errors here.
      var errorCode = error.code;
      var errorMessage = error.message;
      // [START_EXCLUDE]
      if (errorCode === 'auth/wrong-password') {
        alert('Wrong password.');
      } else {
        console.error(error);
      }
      // [END_EXCLUDE]
    });
    // [END authwithemail]
  }
}

function handleSignUp() {
  var email = document.getElementById('semail').value;
  var password = document.getElementById('spass').value;

  if (password.length < 6) {
    alert('Password must be 6 characters or more!');
    return;
  }
  // Sign in with email and pass.
  // [START createwithemail]
  firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    // [START_EXCLUDE]
    if (errorCode == 'auth/weak-password') {
      alert('The password is too weak.');
    } else {
      console.error(error);
    }
    // [END_EXCLUDE]
  });
  // [END createwithemail]
}

Upvotes: 16

Views: 30585

Answers (2)

Asen Mitrev
Asen Mitrev

Reputation: 693

For those poor souls working with react-native-firebase on iOS, there is no need to struggle any more.

  1. Make sure you have added the generated Google plist to your project. 2.Make sure you have generated and added your APN file to your firebase account.
  2. Make sure the app bundle id you have set in Firebase consile matches with that in xcode.

Upvotes: 1

Collin
Collin

Reputation: 497

It appears that my problem was my domain was not authorized for OAuth operations for that Firebase project... I had forgotten to add my domain to the list of authorized ones.

To fix this, go to your Firebase project > Authentication > Sign-In Method > Add your domain under Authorized Domains.

Thanks to @Ymmanuel for the help.

Upvotes: 17

Related Questions