Как разрешить пользователю, вошедшему в систему, создать документ в firestore (веб-версия SDK 9 модульная)

# #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.