Я пытаюсь внедрить анонимную аутентификацию в моем приложении. Я сделал это с React Native Firebase (https://rnfirebase.io/). Пока регистрация хороша. Пользователь подписывается, и я получаю идентификатор пользователя для этого конкретного случая. Вот мой код:
const authenticate = async () => {
await auth()
.signInAnonymously()
.then(() => {
console.log('User signed in anonymously');
console.log(user);
firebase.auth().onAuthStateChanged(user => {
if (user != null) {
fetchData();
}
});
})
.catch(error => {
if (error.code === 'auth/operation-not-allowed') {
console.log('Enable anonymous in your firebase console.');
}
setFetching(false);
console.error(error);
});
};
Как видите, если вы проверите деталь, когда регистрация прошла успешно, у нас есть функция fetchData (). Эта функция извлекала мои данные из базы данных в реальном времени. Вот оно:
const fetchData = async () => {
try {
await fetch(setLocale())
.then(response => response.json())
.then(responseJSON => {
saveFavoritesFromAsync(responseJSON);
setFetched(true);
setFetching(false);
fetchMedusa();
});
} catch (error) {
console.log(error);
setFetching(false);
}
};
Проблема возникает, когда я внедряю правила в firebase. До этого у меня было все открыто (читай: правда, пиши: правда), но чтобы добавить немного безопасности, я пытаюсь добавить эту анонимную аутентификацию. Мои правила теперь таковы:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
После того, как я установил эти правила, данные не могут быть восстановлены. В основном я не получаю никаких данных, и в моем журнале консоли указано «Отказано в доступе».
Что я делаю не так? Должен ли я передать идентификатор пользователя при получении? Пожалуйста, помогите
Большое спасибо