[英]Firebase Authentication User UID as child node in Realtime Database
我正在嘗試在我的實時數據庫中創建一個名為“users”的文件夾,其唯一標識符是創建的 UID Firebase。
這段代碼幾個月前有效。 但它不再。 坦率地說,我做了這么多的改變,我不知道是不是我刪除的東西……但我找不到哪里出了問題。 用戶已創建,但在我的實時數據庫中的“用戶”內沒有寫入任何內容。
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(SignUpActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
auth.signInWithEmailAndPassword(inputEmail.getText().toString(),inputPassword.getText().toString());
Toast.makeText(SignUpActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Toast.makeText(SignUpActivity.this, "Authentication failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
auth.signInWithEmailAndPassword(inputEmail.getText().toString(),inputPassword.getText().toString());
FirebaseUser firebaseUser = auth.getCurrentUser();
String userid = firebaseUser.getUid();
final User newuser = new User(signupInputUsername.getText().toString().trim(), inputEmail.getText().toString().trim(), inputPassword.getText().toString().trim(),
gender.getText().toString().trim(), age.getText().toString().trim());
mDatabase.child("users").child(userid).setValue(newuser);
startActivity(new Intent(SignUpActivity.this, UserActivity.class));
finish();
}
}
});
@IgnoreExtraProperties
public static class User {
public String username, inputEmail, inputPassword, gender, age;
public User() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public User(String username, String inputEmail, String inputPassword, String gender, String age) {
this.username = username;
this.inputEmail = inputEmail;
this.inputPassword = inputPassword;
this.gender = gender;
this.age = age;
}
}
從您的代碼中查看以下代碼
mDatabase.child("users").child(userid).setValue(newuser);
startActivity(new Intent(SignUpActivity.this, UserActivity.class));
finish();
.setValue
方法實際上給了你一個任務,它不是一個 void function 所以你應該給它附加一個監聽器,看看任務是否完成。
如果它在您的代碼中仍然存在問題之前有效。
此外,如果它們還可以,請查找 db 規則。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.