首页 > 解决方案 > 为什么firebase无法创建新用户?

问题描述

我正在尝试使用户可以输入各种导入,并且firebase可以将此信息输入到运行时数据库中。但是,当我按下使下面的代码发生的按钮时,它会导致进度条永远加载。我尝试抛出日志以尝试捕获一些异常,但没有出现异常。在 firebase 控制台上,未在身份验证中创建用户,并且未将任何内容添加到 RunTime DB。我不确定是什么导致了这种情况发生,我将不胜感激。

代码:

    User user = new User(fullName, email, bio, username,location,realstatus,profilePic);

    FirebaseDatabase db = FirebaseDatabase.getInstance();
    DatabaseReference root = db.getReference().child("Users");

    progressBar.setVisibility(ViewStub.VISIBLE);
    mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if(task.isSuccessful()) {
                Toast.makeText(Register.this, "Create User Succeeded", Toast.LENGTH_SHORT).show();
            }
            else{
                Toast.makeText(Register.this, "Failed to Authenticate :( ", Toast.LENGTH_SHORT).show();
            }
        }
    });
            root.push().setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if(task.isSuccessful()) {
                        progressBar.setVisibility(ViewStub.GONE);
                        Toast.makeText(Register.this, "Data Saved", Toast.LENGTH_SHORT).show();
                    }
                    else{
                        Toast.makeText(Register.this, "Failed to Register User :( ", Toast.LENGTH_SHORT).show();
                        Log.e("Create user", "Failed to create user", task.getException());
                    }
                }
            });

错误:

com.google.firebase.FireBaseException:
An internal error has occured. [ socket failed EPERM:(Operation not permitted) ]

标签: javaandroidfirebasefirebase-authentication

解决方案


向 createUser 添加一个完成侦听器,这样您就可以知道它为什么不工作。

           mAuth.signInWithEmailAndPassword(email, password)
                .addOnCompleteListener(LoginActivity.this, task -> {
                    binding.progressBar.setVisibility(View.GONE);
                    if (!task.isSuccessful()) {
                        //get the error here with task.toString();

                    } else {
                        save your database data here
                    }
                });

这至少会帮助你了解它失败的原因。还要确保你有

  1. 在 Firebase 控制台中启用电子邮件身份验证
  2. 已正确设置您的应用程序、SHA-1s、google-services json 和所有

推荐阅读