почему этот код не может зарегистрироваться на firebase? - PullRequest
0 голосов
/ 14 июля 2020

По какой-то причине этот код не может зарегистрироваться на firebase,


app.post('/signup', (req, res) => {
  const newUser = {
    email: req.body.email,
    password: req.body.password,
    confirmPassword: req.body.confirmPassword,
    handle: req.body.handle
  }

  let token, userId;
  db.doc(`/users/${newUser.handle}`).get().then(doc => {
    if (doc.exists) {
      return res.status(400).json({ handle: 'this handle already exists' })
    } else {
      return firebase.auth().createUserWithEmailAndPassword(newUser.email, newUser.password)
    }
  })
    .then(data => {
      userId = data.user.uid;
      return data.user.getIdToken();
    })
    .then(idToken => {
      token = idToken;
      const userCredentials = {
        handle: newUser.handle,
        email: newUser.email,
        createdAt: new date().toISOString(),
        userId
      }

      return db.doc(`/users/${newUser.handle}`).set(userCredentials)
    })
    .then(() => {
      return res.status(201).json({ token });
    })
    .catch(err => {
      if (err.code === "auth/email-already-in-use") {
        return res.status(400).json({ email: 'Email is alrready in use' })
      } else {
        return res.status(500).json({ general: 'something went wrong, please try again' })
      }
    })
});

Я всегда получаю { general: 'something went wrong, please try again' }, я использую почтальон для отправки c запроса на firebase,

Этот код работает отлично:

  firebase.auth().createUserWithEmailAndPassword(newUser.email, newUser.password)
    .then(data => {
      return data.user.getIdToken();
    })
    .then(token => {
     return res.status(201).json({token})
    })
    .catch(err => {
      console.error(err);
      return res.status(500).json({error: 'something went wrongly'})
    })

Первая пробная версия взята из учебника, за которым я следую на Youtube, и, к сожалению, он не работает

1 Ответ

1 голос
/ 14 июля 2020

На бэкэнде вы можете использовать Firebase Admin SDK для получения сведений о любом пользователе, но у него нет возможности войти в систему от имени пользователя .

...