android - Firebase 不注册新用户
问题描述
我有一个问题,我无法在我的聊天应用程序中注册。它告诉我“你不能注册”。我不知道问题出在哪里。我在我的数据库中将 read 和 write 设置为 true,但它仍然无法正常工作。我使用最新版本的 Firebase。我的互联网没有问题,并且成功地将 Firebase 连接到我的项目。
这是我的注册活动
MaterialEditText username, email, password;
Button btn_register;
FirebaseAuth auth;
DatabaseReference reference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Регистрация");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
username = findViewById(R.id.username);
email = findViewById(R.id.email);
password = findViewById(R.id.password);
btn_register = findViewById(R.id.btn_register);
auth = FirebaseAuth.getInstance();
btn_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String txt_username = username.getText().toString();
String txt_email = email.getText().toString();
String txt_password = password.getText().toString();
if (TextUtils.isEmpty(txt_username) || TextUtils.isEmpty(txt_email) || TextUtils.isEmpty(txt_password)) {
Toast.makeText(RegisterActivity.this, "Write more", Toast.LENGTH_SHORT).show();
} else if (txt_password.length() < 6 ){
Toast.makeText(RegisterActivity.this, "Password too short ", Toast.LENGTH_SHORT).show();
} else {
register(txt_username, txt_email, txt_password);
}
}
});
}
private void register(final String username, String email, String password){
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
FirebaseUser firebaseUser= auth.getCurrentUser();
assert firebaseUser !=null;
String userid = firebaseUser.getUid();
reference = FirebaseDatabase.getInstance().getReference("Users").child(userid);
HashMap<String, String> HashMap = new HashMap<>();
HashMap.put("id", userid);
HashMap.put("username", username);
HashMap.put("imageURL", "default");
reference.setValue(HashMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
}
}
});
}else {
Toast.makeText(RegisterActivity.this, "You cant register", Toast.LENGTH_SHORT).show();
}
}
});
}
}
解决方案
在清单文件中允许互联网许可。如果您继续此错误,则创建失败侦听器并打印失败代码
Log.w(TAG, "createUserWithEmail:failure", task.getException());
Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
推荐阅读
- go - 我可以通过引用外部 url 生成 grpc 存根文件吗?
- kubernetes - dapr控制平面在服务调用过程中的作用
- java - SimpleJpaRepository 参数编译错误
- django-rest-framework - Oauth2.0 访问令牌认证与后端服务器 django
- haskell - 如何修复 Haskell 中的字符匹配错误列表?
- c++ - 如何从它的包装器中获取 DLL 导出的全局变量值?
- python - 我的 kivy 应用程序不起作用。我用 builozer 制作了一个 android 下载器应用程序。但是下载器不起作用
- neovim - 如何解决neovim c++ 编译和运行的bug?
- r - 数据框示例:第二列没有重复
- python - 处理日期时间格式的“+00:00”