Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Firebase Permiso denegado (lectura y escritura) con Autenticación

Quiero leer y escribir en mi base de datos con autenticación, pero tengo un Permission denied para ambos. Estoy tratando de averiguar por qué no está funcionando.

He utilizado las reglas por defecto ya que quiero la autenticación, como se explica en el doc.

Las reglas predeterminadas requieren autenticación. Permiten un acceso completo de lectura y escritura a usuarios autenticados de su aplicación. Son útiles si desea que los datos se abran a todos los usuarios de su aplicación pero no quieren que se abra al mundo.

  • Reglas de Firebase:

     { "rules": { ".read": "auth != null", ".write": "auth != null" } } 
  • Crear usuario :

      auth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { Log.d("USER_CREATE", "createUserWithEmail:onComplete:" + task.isSuccessful()); // If sign in fails, display a message to the user. If sign in succeeds // the auth state listener will be notified and logic to handle the // signed in user can be handled in the listener. if (!task.isSuccessful()) { Toast.makeText(getApplicationContext(), "Authentication failed.", Toast.LENGTH_SHORT).show(); } else { startActivity(new Intent(SignupActivity.this, MainActivity.class)); finish(); } // ... } }); 
  • Usuario de sesión:

     auth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { Log.d("COMPLETE", "signInWithEmail:onComplete:" + task.isSuccessful()); } }); 

Tengo un AuthListener y me registra que el usuario está AuthListener .

  • AuthListener:

     mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) { // User is signed in Log.d("TAG", "onAuthStateChanged:signed_in:" + user.getUid()); } else { // User is signed out Log.d("TAG", "onAuthStateChanged:signed_out"); } // ... } }; // ... 
  • Prueba de lectura: (con un nodo I agregado manualmente en la base de datos)

     firebase.child("test").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) { Log.d("result", snapshot.getValue()+""); } @Override public void onCancelled(FirebaseError error) { Log.d("The read failed: ", error.getMessage()); } }); 
  • Escribir prueba : Quiero un nodo principal users con dos categorías de usuarios: devs y los employers .

     Firebase usersRef = firebase.child("users").child("devs"); FirebaseUser user = auth.getCurrentUser(); Map<String, String> userMap = new HashMap<String, String>(); userMap.put("name", "blabla"); userMap.put("city", "Brussels"); Map<String, Map<String, String>> users = new HashMap<String, Map<String, String>>(); users.put(user.getUid().toString(), userMap); usersRef.setValue(users); 
  • Registros:

     D/AUTH LISTENER: onAuthStateChanged:signed_in:wnomkwiOWOb4wNNLSsrWeT5xxUq1 D/USER_CREATE: createUserWithEmail:onComplete:true I/AppCompatViewInflater: app:theme is now deprecated. Please move to using android:theme instead. D/ACTION BAR?: android.support.v7.app.ToolbarActionBar@36c3cd2a W/SyncTree: Listen at /test failed: FirebaseError: Permission denied D/The read failed:: Permission denied D/FirebaseAuth: Notifying listeners about user ( wnomkwiOWOb4wNNLSsrWeT5xxUq1 ). D/FirebaseAuth: Notifying listeners about user ( wnomkwiOWOb4wNNLSsrWeT5xxUq1 ). D/FirebaseApp: Notifying auth state listeners. D/FirebaseApp: Notified 0 auth state listeners. D/AUTH LISTENER: onAuthStateChanged:signed_in:wnomkwiOWOb4wNNLSsrWeT5xxUq1 D/FirebaseApp: Notifying auth state listeners. D/FirebaseApp: Notified 0 auth state listeners. D/AUTH LISTENER: onAuthStateChanged:signed_in:wnomkwiOWOb4wNNLSsrWeT5xxUq1 D/COMPLETE: signInWithEmail:onComplete:true 

Hice esas 2 pruebas con permiso público (escriba: true, read: true) y estaba funcionando, así que algo debe estar mal con mi autenticación. Probablemente estoy equivocando / perdiendo algo pero realmente no veo exactamente qué. Sería muy agradable Si alguien quisiera iluminarme!

    One Solution collect form web for “Firebase Permiso denegado (lectura y escritura) con Autenticación”

    Estás mezclando el antiguo SDK de Firebase con el nuevo SDK de Firebase. Elimine firebase-android-sdk 2.5.2 de su build.gradle y actualice sus importaciones para usar la nueva clase DatabaseReference lugar de la clase Firebase .

      FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.