首页 > 解决方案 > 知道用户是否已经注册了 Reactjs 和 firebase-google auth

问题描述

我正在使用 Reactjs 和 firebase 创建一个 Web 应用程序,但我遇到了一个小问题。感谢 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);
});

但控制台是空的

如果不是,如何不替换数据(通过直接连接而不是重新注册或重新记录,同时将数据保留在“数据”和子数据“中)?

谢谢

标签: javascriptreactjsfirebasegoogle-authentication

解决方案


好的,多亏了result.additionalUserInfo.isNewUser,我终于找到了,我之前已经尝试过,但不是很明显


推荐阅读