0

編集:retrieveData()を更新しました。これで、私のメソッドは、onChildAdded()内のdbに正しい量の要素を表示しますが、postSnapshot.getValue(Info.class)に情報ポストを割り当てようとするとエラーが発生します。ここに私の情報クラスは、セッター、ゲッターなどなしでデータベースからの読み取り中にFirebaseの権限が拒否されましたが、書き込みできます(Android)

public Info(String question,String answer,String a,String b,String c,String d){ 
     this.question=question; 
     this.a=a; 
     this.b=b; 
     this.c=c; 
     this.d=d; 
     this.answer=answer; 
    } 
    public Info(){ 

    } 
} 





public void retrieveData(){ 
       Log.e("burdayım sa","saaaaaaaaaaa"); 
       databaseReference.addChildEventListener(new ChildEventListener() { 
        @Override 
        public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
         Log.e("Count " ,""+dataSnapshot.getChildrenCount()); 
         for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { 
          Info post = postSnapshot.getValue(Info.class); 
          Log.e("Get Data", post.getQuestion()); 
         } 
        } 

        @Override 
        public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
         Log.e("Count " ,""+dataSnapshot.getChildrenCount()); 
         for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { 
          Info post = postSnapshot.getValue(Info.class); 
          Log.e("Get Data", post.getQuestion()); 
         } 
        } 

        @Override 
        public void onChildRemoved(DataSnapshot dataSnapshot) { 

        } 

        @Override 
        public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

        } 

        @Override 
        public void onCancelled(DatabaseError databaseError) { 
         Log.e("The read failed: " ,databaseError.getMessage()); 
        } 

     }); 
    } 
    @Override 
      public void onCancelled(FirebaseError firebaseError) { 
       Log.e("The read failed: " ,firebaseError.getMessage()); 
      } 
     }); 
    } 

これはエラーです:com.google.firebase.database.DatabaseException:com.example入力するjava.lang.String型のオブジェクトを変換することはできませんが.sahilliolu.rqagame.Info


だから、これはデータを受信するための私のコードです。私は以前のアクティビティで認証を処理し、このアクティビティから私のDBに物事を書き込むことができます(私はそのためにfirebaseオブジェクトを使用しません)。しかし、オブジェクトを取得しようとすると、許可が拒否されます。これをどうすれば解決できますか?ここで私はdbに書き込む方法です。

firebaseAuth=FirebaseAuth.getInstance(); 
     if(firebaseAuth.getCurrentUser()==null){ 
      finish(); 
      startActivity(new Intent(this,LoginActivity.class)); 
     } 
     FirebaseUser user=firebaseAuth.getCurrentUser(); 
     databaseReference= FirebaseDatabase.getInstance().getReference().child("questions"); 



Info info=new Info(question,answer,a,b,c,d); 
       newDatabaseReference=databaseReference.push(); 
       newDatabaseReference.setValue(info); 
       Toast.makeText(getApplicationContext(),"Your question is created",Toast.LENGTH_SHORT).show(); 
+0

から構成されていない、間違ったノードを参照していますか? –

+0

{ "ルール":{ ".read ": "!AUTH =ヌル"、 " .WRITE": "!AUTH = null" の }} – Freshia

+0

それはおそらくデフォルトですので、私はfirebaseに新しいです。 DBから読み込もうとする私のfirebase変数には権限がないので、私は失敗すると思います。 – Freshia

答えて

0

あなたはレガシーSDKと新しいSDKの両方を使用している:

// legacy 
firebase.setAndroidContext(this); 
firebase=new Firebase("https://mylink"); 

// new 
FirebaseUser user=firebaseAuth.getCurrentUser(); 
databaseReference= FirebaseDatabase.getInstance().getReference().child("questions"); 

これは良い練習ではなく、おそらく問題の原因です。

新しいSDKを排他的に使用する必要があります。ビルドの依存関係からこの行を削除し、コードを更新:

compile 'com.firebase:firebase-client-android:2.X.X' 

Upgrade Guideが便利です。

+0

を送ってください。私はdatabaseReferece childListenersで取り出すのを変更する必要がありますか? – Freshia

+0

それは最も安全です。それは簡単です。 「アップグレードガイド」を参照してください。 –

+0

私の質問を編集しました。今すぐ確認できますか – Freshia

0

あなたが必要な変数で構成し、あなたのFirebaseルールがどのように見えるかどう唯一の1つの文字列(唯一の問題かもしれない)

関連する問題