Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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 Can';t将用户数据写入firebase_Javascript_Firebase - Fatal编程技术网

Javascript Can';t将用户数据写入firebase

Javascript Can';t将用户数据写入firebase,javascript,firebase,Javascript,Firebase,我是新手,请容忍我。我正在尝试使用fire base简单登录和电子邮件和密码。我有这样的想法: var authClient = new FirebaseAuthClient(fireRef, function(error, user) { if (error) { // an error occurred while attempting login if(error.code === "INVALID_EMAIL"

我是新手,请容忍我。我正在尝试使用fire base简单登录和电子邮件和密码。我有这样的想法:

var authClient = new FirebaseAuthClient(fireRef, function(error, user) {
          if (error) {
            // an error occurred while attempting login

                if(error.code === "INVALID_EMAIL"){ 
                    $('#log_email_error').hide();
                    $('#log_pass_error').hide();
                    $('#log_email_error').html("Invalid email specified.").fadeIn();
                    $('.login_button').removeClass('login_button_success').attr('value','Log in');          
                }
                if (error.code === "INVALID_PASSWORD") {
                    $('#log_email_error').hide();
                    $('#log_pass_error').hide();
                    $('#log_pass_error').html("The specified password is incorrect..").fadeIn();
                    $('.login_button').removeClass('login_button_success').attr('value','Log in');
                }


            console.log(error);
          } else if (user) {
            // user authenticated with Firebase
            hideLogin();
            $('.userInfo_cont').show();
            $('.userInfo').html('<div> '+  user.email + ' <span class="grey">| </span> </div>');
            $('.logout').on('click',function(){
                authClient.logout();
            });

            console.log('User ID: ' + user.id + ', Provider: ' + user.provider);

          } else {
            // user is logged out
            $('.userInfo_cont').hide();
            showLogin();
          }
    });
我的问题是,当我实现读写规则时,如文档所示:

{
  "rules": {
    "users":{
     "$userid": {
        ".read": "auth.id == $userid",
        ".write": "auth.id == $userid"
      }
    }
  }
}
当用户注册时,我的权限被拒绝。因此,它可以很好地注册用户,但不会将附加数据写入/users/id区域

任何帮助都将不胜感激


Craig

在上面的代码片段中,您正在调用
login()
,然后立即调用
set()
。这是有问题的,因为
login()
方法是异步的,并且您几乎总是保证在返回登录尝试方法之前调用了
set()
方法,因为
login()
是非阻塞的,但会对Firebase服务器进行网络调用

这意味着,即使您使用正确的电子邮件和密码调用
login()
,您也在尝试在身份验证过程完成之前设置数据


我建议将
set()
逻辑移动到一个块中,该块仅在确定用户已通过身份验证时才会执行,例如在调用
new FirebaseAuthClient()
并检测到登录用户时传递的回调中。

具体哪一行?userInfo对象中的user.id?这不起作用,因为它不会写入userInfo对象。或者你的意思是在authclient.createUser中?当我在权限中使用它时,这太令人沮丧了:“.read”:“'+auth.id==$userid”,“.write”:“'+auth.id==$userid”,还添加了以下代码:var newid=user.id.toString();var url=USERS\u LOCATION+“/”+newid;它工作了一秒钟,然后停止工作。
{
  "rules": {
    "users":{
     "$userid": {
        ".read": "auth.id == $userid",
        ".write": "auth.id == $userid"
      }
    }
  }
}