Для отправки электронной почты из Firebase вы можете использовать Облачная функция . На эту тему есть официальный образец: https://github.com/firebase/functions-samples/tree/Node-8/email-confirmation
Как сказал Мартин Цайтлер, вы можете использовать метод push()
, чтобы сгенерировать уникальный токен и создать запись с соответствующим письмом. Затем, когда новый пользователь пытается зарегистрироваться, вы можете проверить, что его электронная почта соответствует токену, прежде чем регистрировать его. Это можно сделать разными способами: снова с помощью облачных функций, например, с помощью функции облака HTTPS (см. https://firebase.google.com/docs/functions/http-events) или путем создания в базе данных записи, которая запускает функцию облака (см. https://firebase.google.com/docs/functions/database-events).). В обоих случаях вы будете использовать Admin SDK для регистрации / создания пользователя. см. https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth и https://firebase.google.com/docs/auth/admin/manage-users#create_a_user
Обновление после вашего комментария
Например, у вас может быть форма, в которой вы просите приглашенного пользователя ввести свой адрес электронной почты и полученный им уникальный токен (вы можете открыть и предварительно заполнить эту форму по ссылке, отправленной в электронном письме). Когда эта форма отправляется, она создает узел в базе данных в реальном времени, и это создание узла запускает облачную функцию, которая:
- Во-первых, проверит, соответствуют ли токен и электронная почта (и, возможно, проверит, что они не использовались ранее) и;
- Во-вторых, если предыдущая проверка в порядке, зарегистрирует (то есть создаст) пользователя в вашем приложении Firebase.
Конкретно, давайте представим, что при отправке формы мы создаем следующий узел:
- registrationRequests
-UID
-email: .....
-token: .....
Вы можете использовать облачную функцию в следующих строках:
exports.createInvitedUser = functions.database.ref('/registrationRequests/{requestId}')
.onCreate((snap, context) => {
const createdData = snap.val();
const email = createdData.email;
const token= createdData.token;
//First action, verify email and token by reading the node of the database where you initially stored the email/token
//Second action, register the user by using admin.auth().createUser({})
//See https://firebase.google.com/docs/auth/admin/manage-users#create_a_user
})