2017-08-10 12 views
0

私はAndroidプロジェクトに取り組んでいます。私のfirebaseにユーザーノードがあり、いくつかの情報をリストしたいが、私はuidを読まれたくない。私は措置を取ったが、名前や性別、身分などの情報は読まなかった。どうしたらいいですか? マイデータベースのルール。アンドロイドのfirebaseからユーザー情報を表示するには?

"rules": { 
    "users": { 
      "$uid": { 
       ".read": "$uid === auth.uid", 
        ".write": "$uid!=null && $uid === auth.uid", 
      "name-surname": { 
       ".read": true, 
       ".validate": "newData.isString() && newData.val().length < 30" 
      }, 
      "status": { 
       ".read": true, 
       ".validate": "newData.isString()&& newData.val().length < 75" 
      }, 
      "website": { 
      ".read": true, 
       ".validate": "newData.isString()&& newData.val().length < 80" 
      }, 
      "linkedin": { 
      ".read": true, 
       ".validate": "newData.isString()&& newData.val().length < 80" 
      }, 
      "github": { 
      ".read": true, 
       ".validate": "newData.isString()&& newData.val().length < 80" 
      } 
      } 
    } 
} 

私のコードの一部です。

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference(); 
    final MembersInfo member = new MembersInfo(); 
    mDatabase.child("users").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      // Is better to use a List, because you don't know the size 
      // of the iterator returned by dataSnapshot.getChildren() to 
      // initialize the array 

        String nameSurname = dataSnapshot.child("uid").child("name-surname").getValue(String.class); 
      Toast.makeText(MainActivity.this, nameSurname, Toast.LENGTH_SHORT).show(); 
        member.NameSurname=nameSurname; 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Toast.makeText(MainActivity.this, databaseError.toString(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 
+0

あなたはuidは読まれたくないのですか? –

+0

誰かが自分のUIDにアクセスできないということです。私はその状態が危険だと思う。 – oguzkaganeren

答えて

1

ユーザーのUIDは、セキュリティリスクではありません知っています。私の説明をここに見てください:Firebase - Is auth.uid a shared secret?

つまり、あなたのアプリにユーザープロファイルの一部しか公開しないといけない理由がたくさんあります。これを行うには、サブセットを個別の最上位リストに分離する必要があります。例えば、他の情報を共有することなく、単にユーザー名のリストを許可する:

usernames 
    "209103": "Frank van Puffelen" 
    "7174606": "oguzkaganeren" 

はこのリストを読むことができるようにするには、/usernamesにアクセス権を付与する必要があります。したがって、これは引き続きUIDを共有します。

その他の例については、以下を参照してください。

+0

この美しい答えをありがとう。 – oguzkaganeren