Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果用户已注册,请登录(Firebase facebook/google auth)_Javascript_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Javascript 如果用户已注册,请登录(Firebase facebook/google auth)

Javascript 如果用户已注册,请登录(Firebase facebook/google auth),javascript,firebase,firebase-realtime-database,firebase-authentication,Javascript,Firebase,Firebase Realtime Database,Firebase Authentication,我想检查想使用facebook或google auth-in登录到我的web应用程序的用户是否在firebase的实时数据库中注册,因此想法是在用户按下facebook/google登录按钮后,如果uid已经在实时数据库中,请首先签入实时数据库,然后再将用户重定向到另一个URL,为此,我将使用下一个函数: app.auth = function(){ firebase.auth().onAuthStateChanged(function(user) { if (user)

我想检查想使用facebook或google auth-in登录到我的web应用程序的用户是否在firebase的实时数据库中注册,因此想法是在用户按下facebook/google登录按钮后,如果uid已经在实时数据库中,请首先签入实时数据库,然后再将用户重定向到另一个URL,为此,我将使用下一个函数:

  app.auth = function(){
    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        var users_ref = firebase.database().ref('dream_wedding_users');
        var register_user;
        var register = false;
        users_ref.on('value', function(snapshot) {
          register_user = snapshot.val();
        });
        $.each(register_user, function(index, val){
          if(user.uid === index){
            register = true;
          }
        })
        if(!register){
          firebase.auth().signOut();
          $('#login').modal('hide');
          $('#modal_register').modal('show');
          return false;
        }else{
          $(window).attr('location', 'http://localhost/wedding/en/gallery_en.php');
        }
      }
    });
  }
对于auth函数,只需在按钮上附加facebook和google的常规auth函数

  app.facebook_login = function(){
    var provider = new firebase.auth.FacebookAuthProvider();
    firebase.auth().signInWithPopup(provider).then(function(result) {
      // This gives you a Facebook Access Token. You can use it to access the Facebook API.
      var token = result.credential.accessToken;
      // The signed-in user info.
      var user = result.user;
      // ...
    }).catch(function(error) {
      console.log(error)
    });
  }

  app.google_login = function(){
    var provider = new firebase.auth.GoogleAuthProvider();
    firebase.auth().signInWithPopup(provider).then(function(result) {
      // This gives you a Google Access Token. You can use it to access the Google API.
      var token = result.credential.accessToken;
      // The signed-in user info.
      var user = result.user;
      // ...
      firebase.auth().signInWithRedirect(provider);
    }).catch(function(error) {
      console.log(error);
    });
  }

我的问题是下一个问题,当我单击登录facebook或google时,首先登录用户,然后重定向用户,然后检查用户是否在实时数据库上注册,如果用户未注册,则注销用户,然后显示模式。我不希望重定向用户我希望检查用户是否已注册,如果用户未注册,则显示注册模式,如果用户已注册,则显示重定向。

如果用户已注册,是否要添加唯一用户? 以下是有效的方法:

var usernew = result.additionalUserInfo.isNewUser
console.log('Is this a new user ? => ' + usernew );
完整代码如下:

var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider).then(function(result){
    var usernew = result.additionalUserInfo.isNewUser;
    console.log('Is this a new user ? => ' + usernew );
    if (usernew == true) {
        NewUser();
    }
    var token = result.credential.accessToken;       
    user = result.user; 
    //  alert(JSON.stringify(user.photoURL))                                                      
}).catch(function(error) {
    var errorCode = error.code;
    var errorMessage = error.message;
    var email = error.email;
    var credential = error.credential;
});
添加未注册的用户:

function NewUser(){
    firebase.database().ref('/users').push({
        Name : 'Johnson'
        Age : '22'
    })
}