# #javascript #google-cloud-platform #google-cloud-firestore #firebase-authentication
Вопрос:
Я пытаюсь разрешить пользователям, вошедшим в систему, создавать документ в базе данных Firestore. Для этого я хочу использовать secureToken, который создается с помощью аутентификации Firebase после входа пользователя в систему с помощью метода электронной почты/пароля.
Например, в базе данных Firebase в реальном времени я могу просто отправить запрос на публикацию с помощью axios, в котором я включаю secureToken, как это:
axios.post('https://project_name.europe-west1.firebasedatabase.app/posts.json?auth='
token, postData)
и в Правилах базы данных в реальном времени у меня есть:
{
"rules": {
".read": true,
".write": "auth != null"
}
}
Так что пока это работает нормально.
Но с SDK 9 с модульным подходом я не знаю, как передать secureToken.
Вот запрос addDoc:
const docRef = await addDoc(collection(db, 'posts'), { postData })
Я часами читал облачную документацию, но не мог понять, как действовать дальше.
Нашел это только для добавления данных в целом: https://firebase.google.com/docs/firestore/manage-data/add-data
и это для безопасного запроса данных: https://firebase.google.com/docs/firestore/security/rules-query
Ответ №1:
Если вы также используете Firebase SDK для аутентификации, вам не нужно добавлять какой-либо токен. SDK проверит состояние аутентификации и сделает это за вас.
const docRef = await addDoc(collection(db, 'posts'), { postData })
Описанная выше операция добавит документ в posts
коллекцию, если ваши правила безопасности Firestore позволяют текущему пользователю писать там.
Вы также используете REST API для аутентификации? Тогда вам, возможно, придется также использовать REST API для Firestore и самостоятельно передать токен аутентификации.
Комментарии:
1. Хорошо, большое спасибо. Да, на данный момент я все еще использую REST API для аутентификации, но теперь это изменится.
2. @Stefan в этом случае вам также придется использовать REST API для Firestore или каким-то образом войти в систему с помощью SDK.