1

私はfirebaseを初めて使用しています。私は私のアプリでfirebaseを使ってデータを読み書きしたいが、そうしようとするとこのエラーが発生するDatabaseError: Permission deniedエラー。DatabaseError:許可されていないファイアベース

ルールは

 Firebase authFirebaseRef = new Firebase(ApiConstants.FIREBASE_MY_URL); 
     authFirebaseRef.authWithCustomToken(AppConstants.FBT, authResultHandler); 

Firebase.AuthResultHandler authResultHandler = new Firebase.AuthResultHandler() { 
    @Override 
    public void onAuthenticated(AuthData authData) { 
     Log.v("onAuthenticated", authData.getUid()); 
     addEvents(); 
    } 

    @Override 
    public void onAuthenticationError(FirebaseError firebaseError) { 
     Log.v("onAuthenticationError= ", "FirebaseError= " + firebaseError.toString()); 
    } 
}; 

private void addEvents() { 

    mFirebaseDatabase = mFirebaseInstance.getReference("sos").child("emergencyservices"); 
    mFirebaseDatabase.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      emergencyServicesList.clear(); 
      for (DataSnapshot dataSnapshotChild : dataSnapshot.getChildren()) { 
       Log.v("onDataChange", ":" + dataSnapshotChild.child("emergencyServicesName").getValue()); 
       EmergencyServiceModel emergencyServiceModel = new EmergencyServiceModel(); 
       emergencyServiceModel.setEmergencyServiceId(dataSnapshotChild.child("emergencyServicesId").getValue().toString()); 
       emergencyServiceModel.setEmergencyServiceName(dataSnapshotChild.child("emergencyServicesName").getValue().toString()); 
       emergencyServicesList.add(emergencyServiceModel); 
      } 
      loadDataToRecyclerView(); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Log.v("DatabaseError", databaseError.getMessage()); 
     } 
    }); 
} 

は、以前私が read/write.trueを保つことによって sos/emergencyservicesにいくつかのレコードを追加firebase

{ 

"rules": { 
    "sos":{ 
      ".read":"auth != null", 
      ".write":"auth != null" 
      } 
} 
} 

コードファイル上のファイル。しかし今は認証で変更する必要があります。

+0

このリンクをチェックするhttps://stackoverflow.com/questions/37424544/firebase-database-permission-denied-with-read-write-permissions-set-to-true –

+0

コンソールからサインインを有効にしましたか? –

+0

@akshay_shahaneはい、私はすでに – VVB

答えて

1

私はあなたがauthおよびクエリの異なるものに対して異なるfirebaseオブジェクトを使用していると思います。
はまた、あなたがfirebase APIの旧バージョンを使用している代わりに

mFirebaseDatabase = mFirebaseInstance.getReference("sos").child("emergencyservic‌​es"); 
mFirebaseDatabase.addValueEventListener(new ValueEventListener() { ... }; 

のこの

authFirebaseRef.getRoot().child("sos/emergencyservices"‌​).addValueEventListe‌​ner(new ValueEventListener() { ... }; 

を試してみてください。私はこれをlinkに紹介します。このドキュメントでは、既存のFirebase.comアプリケーションを新しいFirebaseコンソールとAPIにアップグレードする方法について説明します。

+0

あなたの答えで編集することはほとんどありません。 – VVB

+0

文書を読んでください。新しい火災基地にアップグレードすることで、作業がより簡単で効率的になり、技術的に更新されます。そして、あなたは多量の資源を見つけるでしょう。 – Journey

+0

確認してください。もう一度ありがとう – VVB

0

リスナーを接続する前に、ユーザーがログインしていることを確認する必要があります。すでに認証状態のために聞いているので、それがonAuthenticatedコールバックにリスナーを添付したコードを動かすの問題です:

Firebase.AuthResultHandler authResultHandler = new Firebase.AuthResultHandler() { 
    @Override 
    public void onAuthenticated(AuthData authData) { 
     Log.v("onAuthenticated", authData.getUid()); 
     addEvents(); 

     mFirebaseDatabase = mFirebaseInstance.getReference("sos").child("emergencyservices"); 
     mFirebaseDatabase.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       emergencyServicesList.clear(); 
       for (DataSnapshot dataSnapshotChild : dataSnapshot.getChildren()) { 
        Log.v("onDataChange", ":" + dataSnapshotChild.child("emergencyServicesName").getValue()); 
        EmergencyServiceModel emergencyServiceModel = new EmergencyServiceModel(); 
        emergencyServiceModel.setEmergencyServiceId(dataSnapshotChild.child("emergencyServicesId").getValue().toString()); 
        emergencyServiceModel.setEmergencyServiceName(dataSnapshotChild.child("emergencyServicesName").getValue().toString()); 
        emergencyServicesList.add(emergencyServiceModel); 
       } 
       loadDataToRecyclerView(); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       Log.v("DatabaseError", databaseError.getMessage()); 
      } 
     }); 
    } 

    @Override 
    public void onAuthenticationError(FirebaseError firebaseError) { 
     Log.v("onAuthenticationError= ", "FirebaseError= " + firebaseError.toString()); 
    } 
}; 
+0

ありがとうございます。はい、私は同じことをやっています。編集コード – VVB

+0

を参照してください。うーん....何が起こっているのか分からない。エラーメッセージは、どの場所に障害が発生しているかを示すはずです。 –

+0

@VVBそれは働いたのですか? – Journey

0

さて、あなたはfirebaseコンソールに必要なサインインの方法を有効んでした?

firebase_signin_method

+0

はい私はすでにそれをしました – VVB

+0

ユーザーを登録できましたか? – Journey

+0

はい私はカスタムJWT firebase統合を使用しました – VVB

関連する問題