0

を否定し、私はauth.uidが読み出される場合、私は理解していないが、security quickstart guideリアルタイムデータベース認証:失敗:DatabaseError:許可が

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": "$uid === auth.uid", 
     ".write": "$uid === auth.uid" 
     } 
    } 
    } 
} 

からこれらのルールを使用したいですか?

下記のような場合に情報を保存することができますので、問題はauth.idであることを確認できます。私はそれをパラメータなどに渡す必要があるかどうかはわかりません。これが私が失われている場所だと私は恐れている。

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": true, 
     ".write": true 
     } 
    } 
    } 
} 

これは私がそれをテストするために使用しています現在のJavaコードです:

FirebaseDatabase database = FirebaseDatabase.getInstance(); 
DatabaseReference myRef = database.getReference(); 
User u = new User("Jack", "[email protected]", "12345678"); // Very simple class holding this user information 
myRef.child("users").child(mFirebaseUser.getUid()).setValue(u); 

私はfirebasesリアルタイムデータベース上の情報を見ていたが、彼らは単に認証に彼らを取得するたびにされてきました「今のところは認証を無効にしますが、実稼働環境で確実に使用するようにしてください」と言います。

+0

セキュリティルールの 'auth'変数については、https://firebase.google.com/docs/database/security/user-security#section-variableを参照してください。ユーザーがログインすると、自動的に読み込まれます。ログインしたユーザーの一意の識別子である 'uid'プロパティが含まれています。 –

+0

あなたが共有したコードはユーザを認証しないので、このルールは '$ uid === auth.uid'に失敗します。ユーザーにログインする方法については、https://firebase.google.com/docs/auth/ –

+0

はい、申し訳ありません。このアクティビティの意図を認証するLoginActivityがあります。私は、問題が私が別のアクティビティでユーザーを認証していると考えて、それがどうにかして "認証された"状態を失うと考えていると思います。 – jackdh

答えて

0

私はもともとデバッグ目的のために入れ私のコード上記FirebaseAuth.getInstance().signOut();数行を呼んでいた血まみれの馬鹿、

です。

0

まあ、パラメータとして渡す必要はありません、firebaseあなたのためにそれを行います。あなたがコンソールにユーザを作成してアプリケーションにログインすると、Firebaseは各ユーザに別のuid(これに似ています。ca07912b-7e65-41ad-8342-e87cf6f6ceb2)を提供することを説明しようとします。ログイン後

だから、それはあなたのスマートフォンに保存され、データベース・firebaseで行うすべての要求は、セキュリティルールを分析しますので、あなたはX UID の所有者のみが、その後/users/**X**/..にアクセスできることを言っているとき、ログインしていない場合は、このパスに書き込むことはできません。

関連する問題