Узнайте, зарегистрирован ли пользователь в Reactjs & firebase-google auth. - PullRequest
0 голосов
/ 26 июня 2018

Я создаю веб-приложение с Reactjs и firebase и столкнулся с небольшой проблемой. У меня есть система регистрации / входа в систему благодаря учетным записям Firebase и Gmail. Когда пользователь регистрируется, в дополнение к классической функции firebase, я вызываю функцию для записи информации о пользователе в моей базе данных.

Проблема, с которой я сталкиваюсь, заключается в следующем: если пользователь, который уже зарегистрирован через свой аккаунт гугл, что он заполнил вещи в приложении и что он был зарегистрирован в базе, если пользователь попытается зарегистрироваться снова (потому что он забыл, что оно уже зарегистрировано), вся информация о нем удаляется из базы данных. Например, вот структура моей базы:

users
- user-1
--- E-mail
--- username
--- data
----- sub-data
- user-2
--- E-mail
--- username
--- data
----- sub-data

Если пользователь 1 попытается зарегистрироваться снова, вот новая база:

users
- user-1
--- E-mail
--- username
--- data
----- sub-data
- user-2
--- E-mail
--- username
--- data
----- sub-data

Итак, это мой код для регистрации:

auth.signInWithPopup(googleProvider)
.then((result) => {
db.doCreateUser(result.user.uid, result.user.displayName,
result.user.email);
});

и функция doCreateUser:

doCreateUser = (id, username, email) =>
db.ref(`users/${id}`).set({
username: username,
email: email,
});

Можно ли узнать, зарегистрирован ли пользователь в этой учетной записи Google? Если да, можете ли вы дать мне некоторые идеи, чтобы сделать это?

Я попытался восстановить ошибку, выполнив следующее:

authen.signInWithPopup (provider) .catch (function (error) {
console.log (error);
});

но консоль пуста

Если нет, то как не заменить данные (либо путем непосредственного соединения, а не путем перерегистрации или перезаписи, сохраняя данные в «данных» и под-данных »)?

спасибо

1 Ответ

0 голосов
/ 26 июня 2018

Хорошо, я наконец-то нашел благодаря result.additionalUserInfo.isNewUser, я уже пробовал раньше, но не так очевидно

...