2016-09-20 4 views
0

私はユーザーから有益な情報を収集するアンドロイドアプリを作っています。コードはこちらAndroid AppのFirebaseデータベースセキュリティルールを設定するには

Firebase postRef = mRef.child("marks"); 
Map<String, String> marks = new HashMap<String, String>(); 
marks.put("Name", fname); 
marks.put("Phone", fphone); 
marks.put("Year", fyear); 
marks.put("Email", femail); 
String uid=postRef.getKey(); 
Toast.makeText(im.this,"Thanks!",Toast.LENGTH_LONG).show(); 

これにより、Androidアプリケーションのすべてのユーザーからデータが取得されます。認証されたユーザーだけが自分の情報にアクセスできる特定のルールを設定する方法を教えてください。他のユーザーの情報ではありません。

私はFirebase規則でこれを試してみました:

{ 
    "rules":{ 
    "$uid":{ 
    ".read":"auth.uid==$uid", 
    ".write":"auth.uid==$uid", 
    ".validate":"newData.hasChildren(['uid','Email','Name'])" 
    } 
    } 

} 

しかし、その作業はありません。親切に私に具体的な解決策を教えてください。

+0

ルールは、ユーザーが自分のデータにしかアクセスできないように見えます。共有したコードはデータベースの読み書きが行われないので、失敗することはありません。どうしたの? –

+0

ありがとう、フランクを探して!実際のデータベースでは、UIDはありません。ここにlogcatがあります。 '09 -21 00:36:03.971 31112-31223/com.example.amey.ilsalpha V/RenderScript:0x559eaba9c0起動中のスレッド、CPU 6 09-21 00:36:04.413 31112-31465/com.example .amey.ilsalpha W/RepoOperation:/ marks/-KS7zP1oKI0WmcikjO1GのsetValue:FirebaseError:許可が拒否されました ' – coolamz

答えて

1

あなたの質問とコメントを正しく読んだら、データを「マーク」ノードの下に置いています。つまり、セキュリティルールに以下のようなセキュリティルールを含める必要があります。

{ 
"rules":{ 
    "marks":{ 
    "$uid":{ 
     ".read":"auth.uid==$uid", 
     ".write":"auth.uid==$uid", 
     ".validate":"newData.hasChildren(['uid','Email','Name'])" 
     } 
    } 
    } 
} 
+0

ありがとうAndre!しかし、それでも動作していない!それは読むために多くの助けになりました。しかし、書き込みのための解決策が必要です。 – coolamz

+0

@coolamz質問に書き込むために使用しているコードを追加する必要があります。 –

+0

私の謝罪!その最初の質問はここ! { "ルール":{ "マーク":{ "の$ UID":{ ".read ":" auth.uid == $のUID"、 ".WRITE":ここでは、現在のコードがあり、真、 ".validate": "newData.hasChildren(['Email'、 'Name'])" } } } } – coolamz

関連する問題