Firebase Realtime Databaseのルールに問題があります。私はmAuth.createUserWithEmailAndPassword(email, password)
と新しいユーザーを登録します。 onCompleteMethod
では、自分自身のユーザーオブジェクトをリアルタイムデータベースに追加したいと考えています。 私はこれをやっています。なぜなら、各ユーザは電子メール/パスワードに関する追加情報を持っているからです。Firebase Realtime Databaseのルールにより、認証されたユーザからの書き込みが許可されない
私は
FirebaseUser fireUser = FirebaseAuth.getInstance().getCurrentUser();
if(fireUser == null) {
//do something
} else {
createNewUser(fireUser);
}
を確認した後、方法
private void createNewUser(FirebaseUser fireUser) {
// Build the user-object.
User user = new User();
user.setUserId(fireUser.getUid());
user.setUsername(name);
user.setSex(sex);
user.setEmail(email);
user.setAge(time);
user.setImageUri("");
// Create database connection and reference.
DatabaseReference mDatabaseRef = FirebaseDatabase.getInstance().getReference();
mDatabaseRef.child("users").child(fireUser.getUid()).setValue(user);
}
が呼び出されます。しかし、いくつかの理由でこのDatabaseErrorがスローされます。
W/RepoOperation: setValue at /users/9i6loj4BlCWkgkXOULWxbCSlvnx1 failed: DatabaseError: Permission denied
FirebaseUserがnullでない場合、私の理解によると - 彼がログインしているので、私のルールは
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
は、ユーザーが許可されますFirebaseで宣言されましたデータベースに書き込む。しかし、このコードは、ルールを".read": "true"
と".write": "true"
に変更すると機能します。
私の質問は、ここで間違っていますか?私は、認証されたユーザーに読み書きをしたいだけです。
ありがとうございました!
EDIT
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
loadingPanel.setVisibility(View.GONE);
} else {
loadingPanel.setVisibility(View.GONE);
FirebaseUser fireUser = FirebaseAuth.getInstance().getCurrentUser();
if(fireUser == null) {
Toast.makeText(getApplicationContext(), "User is null", Toast.LENGTH_SHORT).show();
}
// Send verification mail
sendVerificationEmail(fireUser);
// Create a new User!
createNewUser(fireUser);
//start intent and sign out.
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
FirebaseAuth.getInstance().signOut();
startActivity(intent);
finish();
}
}
'onComplete()'メソッドの本体を含むようにあなたの投稿を更新できますか?これにより、 'createNewUser()'の実行パスがより明確になります。 –
私はonCompleteメソッドを追加しました。私はそれが助けて欲しい! – Hnig