es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de firestore/permission-denied con la consulta de Firestore inmediatamente después de que signInAnonymously se completa exitosamente.

Estoy intentando obtener/escribir y actualizar datos en Firestore en React Native (0.66.3), mostrando error

[Error: [firestore/permission-denied] El llamador no tiene permisos para ejecutar la operación especificada.]

i.stack.imgur.com/OZRzP.png

También actualicé las reglas:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

Código de la aplicación:

import React from 'react';
import { Text, View, TouchableOpacity } from 'react-native';

import firestore from '@react-native-firebase/firestore';
import auth from '@react-native-firebase/auth';

export default function App() {
  async function addTodo() {
    await auth().signInAnonymously().then((res)=> {
      console.log(auth().currentUser.uid);
      return firestore().collection('document').get();
    }).catch((err)=>{
      console.log(err);
    });
  }

  return (
    <view>
      <touchableopacity onpress="{()" ==""> addTodo()} style={{padding:50}}>
        <text>Test </text>
      </touchableopacity>
    </view>
  );
}

Salida i.stack.imgur.com/Yp5RU.png

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error que estás recibiendo indica que el llamador (es decir, tu aplicación) no tiene permiso para ejecutar la operación especificada (es decir, obtener/escribir/actualizar datos en Firestore).

    Según la captura de pantalla de tus reglas de Firestore, parece que has configurado los permisos para permitir la lectura y escritura solo si el usuario está autenticado (if request.auth != null). Sin embargo, en el código de tu aplicación, te estás registrando de forma anónima usando auth().signInAnonymously(), lo que significa que el usuario no está autenticado con Firestore.

    Para solucionar este problema, debes hacer una de las siguientes opciones:

    1. Cambiar las reglas de Firestore para permitir la lectura y escritura para usuarios no autenticados:
    rules_version = '2';
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write;
        }
      }
    }
    

    Ten en cuenta que esto permite que cualquier persona lea y escriba en tu base de datos de Firestore, así que úsalo con precaución.

    1. Iniciar sesión del usuario con un método de autenticación permitido en tus reglas de Firestore (por ejemplo, autenticación por correo electrónico y contraseña o inicio de sesión con Google).

    Una vez que el usuario esté autenticado, podrás acceder a Firestore con sus credenciales y realizar operaciones de lectura/escritura.

Comments are closed.