2016-08-06 18 views
2

Nachdem der Benutzer angemeldet und die Sitzung aktiv ist, können Daten aufgrund des Fehlers Berechtigung verweigert nicht gelesen/geschrieben werden. Regeln sind Standard:Standardmäßige Firebase-Berechtigung von Android wird verweigert, selbst wenn der Benutzer authentifiziert wurde

FirebaseAuth funktioniert einwandfrei, und alle Anmeldeinformationen sind zugänglich, aber nichts von root Firebase-Knoten.

Instanz wird ohne Probleme Introduction:

mAuth = FirebaseAuth.getInstance(); 

Firebase Auth (unter Verwendung von E-Mail und Passwort Schema) Code:

public void signIn(String email, String password) { 
    mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      if (!task.isSuccessful()) { 
       showAlert(Values.ERROR, Values.WRONG_EMAIL_OR_PASSWORD_ALERT); 
      } else { 
       changeStatus(FirebaseAuth.getInstance().getCurrentUser()); 
       startActivity(new Intent(mTab.getContext(), MainActivity.class)); 
      } 
      mProgress.hide(); 
     } 
    }); 
} 

Vor stellte ich einen Firebase Kontext auf:

Firebase.setAndroidContext(mTab.getContext()); 

Und auch nach erfolgreicher Anmeldung kann ich aufgrund eines Berechtigungsfehlers nicht auf meine Datenbank zugreifen:

public void changeStatus(FirebaseUser user, String status) { 
    Firebase.setAndroidContext(getContext()); 
    mStatusRef = new Firebase(Values.FIREBASE_ADDRESS + "/statuses/" + user.getUid() + "/"); 
    mStatusRef.setValue(status); 
    } 

oder

public void setLastMessage(final MyViewHolder holder, String uid) { 
    Firebase.setAndroidContext(mView.getContext()); 
    mMessageRef = new Firebase(Values.FIREBASE_ADDRESS + "https://stackoverflow.com/users/" + mUser.getUid() + "/chats/" + uid + "/message"); 
    mMessageRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      holder.lastMessage.setText(dataSnapshot.getValue().toString()); 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 
    } 

Fehler von der Konsole:

W/RepoOperation: setValue at /statuses/ghTGuwjc4saAQqyJgoMONV2Rz483  failed: FirebaseError: Permission denied 
W/SyncTree: Listen at /party failed: FirebaseError: Permission denied 

Mein JSON Baum hat folgenden Aufbau: Firebase Database tree view from console

app/build.graddle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

defaultConfig { 
    applicationId "GGG.GGG.com.GGG" 
    minSdkVersion 19 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
packagingOptions { 
    exclude 'META-INF/DEPENDENCIES' 
    exclude 'META-INF/NOTICE' 
    exclude 'META-INF/LICENSE' 
    exclude 'META-INF/LICENSE.txt' 
    exclude 'META-INF/NOTICE.txt' 
} 
} 
repositories { 
    maven { 
     url "https://jitpack.io" 
    } 
} 
dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.3.0' 
    compile 'com.android.support:design:23.3.0' 
    compile 'com.firebase:firebase-client-android:2.5.2+' 
    compile 'com.google.firebase:firebase-auth:9.2.0' 
    compile 'com.android.support:recyclerview-v7:23.1.1' 
    compile 'com.android.support:cardview-v7:23.0.+' 
    compile 'com.github.castorflex.smoothprogressbar:library:1.0.0' 
    compile 'com.yalantis:phoenix:1.2.3' 
    compile 'com.facebook.network.connectionclass:connectionclass:1.0.1' 
    compile 'com.nineoldandroids:library:2.4.0' 
    compile 'com.daimajia.easing:library:[email protected]' 
    compile 'com.daimajia.androidanimations:library:[email protected]' 
    compile 'com.roughike:swipe-selector:1.0.6' 
    compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' 
} 

apply plugin: 'com.google.gms.google-services' 

Meine Anwendung besteht aus MainActivity und ViewPager Widget. Laut Firebase Docs sollte es jedoch keine Rolle spielen, ob die FirebaseAuth-Instanz erreichbar ist, was bedeutet, dass die Sitzung aktiv ist (also authentifiziert).

Vielleicht fehlt mir etwas? Ich habe versucht, Firebase-Dokumente (alles ist sehr klar und leicht zu verstehen) viele Male zu lesen, aber es fühlt sich so an, als ob mein Problem in dem Kontext einzigartig ist.

ich geänderte Regeln zu öffentlichen nur für Entwicklungszwecke, jedoch kann ich meine Datenbank für alle geöffnet werden nicht zulassen, nach der endgültigen Version veröffentlicht ...

Was ein Problem sein könnte?

Ich benutze Firebase Console und diese Android Setup-Anleitung:

Android Firebase Setup 2.5.2+

Aus irgendeinem Grund, den ich nicht in der Lage bin meine graddle Datei auf die neueste Version Firebase 'com.google.firebase:firebase-core:9.4.0' Abhängigkeit zu aktualisieren. Es wird mit dem Fehler "Kann nicht aufgelöst werden" kompiliert.

+1

fügen Sie bitte Ihre firebaseauth Code –

+0

Ohne den [minimale Code, der das Problem reproduziert] zu sehen (http://stackoverflow.com/help/mcve), können wir nur spekulieren. –

+0

Danke für Ihre Antworten! Hinzufügen von Details jetzt – NickitaX

Antwort

1

Okay, so wurde das Problem, wie ich es erwartet hatte, mit einem Firebase-Update verbunden. Bitte folgen Sie dem neuesten Update [wenn diese Antwort veröffentlicht wurde, war es 9.4.0] und migrieren Sie von der alten Version auf die neueste.

Firebase update from 'com.firebase:firebase-client-android:x.x.x' to 'com.google.firebase:firebase-database:9.4.0'

Wenn Sie ein Problem mit graddle Datei zu lösen haben, sollten Sie Ihre aktualisieren:

  • Android Support-Repository
  • Google Play-Dienste
  • Google Repository

Hoffe es wird dir helfen. Bleib auf dem Laufenden.

+0

, dass mein Problem zu 9.4.0() – Kaloglu

+0

Glad es – NickitaX

0

ändern Sie die Regeln durch diese Werte in Bild unten angegeben. das war die Regel für mich !!!

enter image description here

+0

bitte laden ur Bild richtig http geholfen (y) fix aktualisieren: // stackoverflow.com/questions/28496851/how-to-upload-pictures-to-stackoverflow-for-posting –