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.]
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
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 usandoauth().signInAnonymously()
, lo que significa que el usuario no está autenticado con Firestore.Para solucionar este problema, debes hacer una de las siguientes opciones:
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.
Una vez que el usuario esté autenticado, podrás acceder a Firestore con sus credenciales y realizar operaciones de lectura/escritura.