繁体   English   中英

"firebase.auth().onAuthStateChanged 不工作"

[英]firebase.auth().onAuthStateChanged Not Working

我正在尝试建立一个为用户使用电子邮件身份验证的网站。 但是,每次我尝试注册或登录用户时,firebase.auth().onAuthStateChanged 函数都会触发,但无法识别用户已登录或注册。 这是我当前的代码。 我知道它有效,因为它会提醒我,“没有用户!” 每次登录或注册后,因为我可以进入我的 Firebase 控制台并查看用户已注册。 如果有人知道如何解决这个问题,我将不胜感激!

谢谢!

代码:

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

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

登录和注册代码:

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]
}

我的问题似乎是我的域名未获得该Firebase项目的OAuth操作授权...我忘记将我的域名添加到授权列表中。

要解决此问题,请转到您的Firebase项目>身份验证>登录方法>在授权域下添加您的域。

感谢@Ymmanuel的帮助。

对于那些在 iOS 上使用 react-native-firebase 的可怜人来说,没有必要再挣扎了。

  1. 确保您已将生成的 Google plist 添加到您的项目中。 2.确保您已生成 APN 文件并将其添加到您的 Firebase 帐户。
  2. 确保您在 Firebase 控制台中设置的 app bundle id 与 xcode 中的匹配。

对于那些在其本机Capacitor\/Cordova 应用程序<\/strong>中使用web js 库<\/strong>作为 firebase 的用户(以便在创建 pwa 时也减少代码),请参阅此处的解决方案: https<\/a> :\/\/stackoverflow.com\/a\/70902260\/17137614

"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM