私は Firebase を使い始めたばかりで、セキュリティ ルールに問題があります。新しいユーザーを登録またはログインする Android クライアントがあります。そのユーザーの最初のログイン時に、次のようにデータを Firebase に保存します。
public void onAuthenticated(AuthData authData) {
//Save user data to firebase
Map<String, Object> map = new HashMap<String, Object>();
map.put("provider", authData.getProvider());
ref.child("users").child(authData.getUid()).updateChildren(map);
}
(これは、ユーザーの認証時に onAuthenticated() で呼び出されます)
ただし、私のセキュリティ ルールでは、ユーザーのデータが既に保存されていない限り、ユーザーがデータベースに書き込むことを許可していないようです。私のルールは次のとおりです。
{
"rules": {
"users":{
"$userid": {
".read": "auth.id == $userid && auth !== null",
".write": "auth.id == $userid && auth !== null"
}
}
}
}
また、重要な場合は、実際に保存されたときにデータがどのように見えるかの例を次に示します。
クライアントがサーバーで認証された後にユーザー データを書き込むことができるようにするには、ルールをどのように変更すればよいですか?
編集: いくつかのテストの後、これらのルールでは、ユーザー ノードが既に存在する場合でも、ユーザーがユーザー ノードに何かを書き込むことを許可していないようです。