Если я правильно понимаю ваше требование, вам следует просто проверить, есть ли в вашей коллекции документальный файл с этим phone_number с запросом через Admin SDK.
Так что, если я сделаю предположение, что вы собираетесь использовать облачную функцию HTTPS, что-то вроде следующих строк должно сработать. Должно быть легко адаптировать его к другим триггерам облачных функций.
exports.registerUser = functions.https.onRequest((req, res) => {
const phone_number = req.body.phone_number;
const peopleCollecRef = admin.firestore().collection('people');
peopleCollecRef
.where('phone_number', '==', phone_number)
.get()
.then(querySnapshot => {
if (querySnapshot.size === 1) {
return admin.auth().createUser({
email: req.body.email,
emailVerified: false,
phoneNumber: phone_number,
password: '....'
});
} else {
throw new Error('No user (or more than one user) with corresponding phone number ');
}
})
.then(userRecord => {
res.send({ result: 'user created with id: ' + userRecord.uid }); //Just an example
})
.catch(error => {
res.status(500).send(error);
});
});
Вы также, вероятно, должны пометить, когда пользователь был зарегистрирован, чтобы избежать использования телефонного номера другим пользователем в другой раз. В зависимости от вашей модели данных в облачной функции, вероятно, необходимо выполнить несколько проверок.