Как написать функцию, которая принимает электронную почту и пароль пользователя от клиента и регистрирует его? (Firestore функции) - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть случай, когда я хочу зарегистрировать пользователей по электронной почте и паролю, поэтому я хочу написать функцию, которая принимает эти два параметра и создает нового пользователя и возвращает сообщение OK или что-то в этом роде.

Это мой код в React-Native:

  firebase.functions().httpsCallable('registerNewPatient')({
  email: 'testestbmf@hotmail.com',
  password: 'bbbbbb1'
}).then((onfulfilled, onrejected) => {
  if (onfulfilled) {
    console.log("OK callback function:", onfulfilled);
  } else {
    console.log("Error callback function:", onrejected)
  }

}).catch(error => { console.log("ERror handled", error) })

Это функция, развернутая в Firebase, на которую я пытаюсь отправить электронную почту и пароль, выполнить и отправить ответ обратно в RN. :

exports.registerNewPatient = functions.region('europe-west3').https.onCall((data, context) => {
const email = context.auth.token.email || null;
const password = context.auth.token.password || null;
const registeredUser = null;
admin.auth().createUser({
    email: email,
    emailVerified: false,
    password: password,
    disabled: false
})
   .then(function (userRecord) {
        registeredUser = userRecord.uid;
    });
return registeredUser;
});

1 Ответ

0 голосов
/ 13 апреля 2020

Вы пытаетесь прочитать электронную почту и пароль из context.auth, где Cloud Functions передает текущую информацию о пользователе от клиента на сервер. Но так как вы передаете их как параметры, вам нужно прочитать их из ``:

exports.registerNewPatient = functions.region('europe-west3').https.onCall((data, context) => {
    const email = data.email || null;
    const password = data.password || null;
    ...

. Я бы также избавился от предложений || null, так как кажется, что ваш код не должен работать без электронной почты и пароля:

exports.registerNewPatient = functions.region('europe-west3').https.onCall((data, context) => {
    if (!data.email) throw "Missing email parameter";
    if (!data.password) throw "Missing password parameter";
    const email = data.email;
    const password = data.password;
    ...
...