# #flutter #google-cloud-firestore #firebase-security
Вопрос:
Я использую firestore для приложения для чата с flutter. и у меня есть проблема, что чат иногда не может быть отправлен или получен.
насколько я знаю, причина, по которой возникают эти проблемы, заключается в том, что я получаю следующую ошибку:
Вызывающий абонент не имеет разрешения на выполнение указанной операции.. Ошибка, выданная null
Эта ошибка означает, что он застрял в системе безопасности firestore.
Мое правило пожарной безопасности гласит, что:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
function signedIn() {
return request.auth.uid != null;
}
match /chats/{chatId} {
allow create: if signedIn();
allow read: if signedIn() amp;amp; ( resource.data.userUid == request.auth.uid || resource.data.consultantUid == request.auth.uid );
}
}
}
Я думаю, что таково значение ‘request.auth.жидкости» не существует.
Поэтому я хочу проверить, соответствует ли значение ‘request.auth.жидкость действительно исчезла. Но я не знаю, как получить » запрос.авт.uid’ перед чтением или записью с помощью firestore с помощью flutter.
Мой код флаттера таков(с использованием cloud_firestore):
FirebaseFirestore.instance
.collection('chats')
.doc(uid)
.set(chat.toMap());
}
Пожалуйста, дайте мне знать, если у вас есть какие-либо другие советы о том, как решить эту проблему
Спасибо, что прочитали мой вопрос.
Комментарии:
1. Чтобы проверить значение
request.auth.uid
в вашем коде, вы бы использовалиFirebaseAuth.instance.currentUser
, как показано здесь: firebase.flutter.dev/docs/auth/usage . Если вы напечатаете это значение непосредственно перед доступом к базе данных, у вас будет больше шансов получить это значение, поскольку ваши правила безопасности также видят его.