Firebase - 检查使用 Google 帐户创建的用户是不是正在注册或登录?
Posted
技术标签:
【中文标题】Firebase - 检查使用 Google 帐户创建的用户是不是正在注册或登录?【英文标题】:Firebase - check if user created with Google Account is signing up or logging in?Firebase - 检查使用 Google 帐户创建的用户是否正在注册或登录? 【发布时间】:2021-10-23 13:00:14 【问题描述】:我正在尝试创建一个 Web 应用程序,您可以在其中使用 google 帐户登录并注册一个帐户。我已经设法做到了,因此他们可以使用 signInWithPopup(provider) 登录,但不确定如何实现注册。有什么建议?或者知道我可以使用的 firebase 中的任何功能吗?
【问题讨论】:
【参考方案1】:在使用 Google 登录或任何其他提供商时,login
和 sign up
没有任何单独的方法。如果存在具有该凭据的用户,则该用户将登录,否则将创建一个新用户帐户。然后,您可以使用从signInWithPopUp
方法收到的结果中的additionalUserInfo.isNewUser
属性来检查用户是否是新用户。
firebase.auth().signInWithPopup(provider).then(function (result)
const additionalUserInfo: isNewUser = result;
console.log(isNewUser ? "This user just registered" : "Existing User")
)
对于新的Modular SDK (V9.0.0+
),同样可以写成:
import signInWithPopup, getAdditionalUserInfo from "firebase/auth"
const result = await signInWithPopup(auth, googleProvider);
// Pass the UserCredential
const isNewUser = getAdditionalUserInfo(result)
【讨论】:
非常有帮助,谢谢!!您知道您是否可以使用附加用户信息访问 google 帐户的生日? @gitmcgee 您必须添加https://www.googleapis.com/auth/user.birthday.read
范围以及提供程序,然后使用 accessToken 向 People API 发出请求。您可以查看this answer 了解详细的 API 使用情况。【参考方案2】:
到目前为止,据我了解,您有两种登录网站的选择:一种是在您的网站上创建一个本地用户名/密码帐户,另一种选择是使用您的 google 帐户。我想最好的方法是检查 Google 帐户是否使用additionalUserInfo.isNewUser
链接到任何现有用户,然后按照这篇文章将您的 Google 帐户与通过您的网站在本地创建的帐户链接起来:https://firebase.google.com/docs/auth/web/account-linking?hl=lt
【讨论】:
【参考方案3】:一旦您的应用程序中有 Firebase 依赖项。您可以使用 createUserWithEmailAndPassword 方法来做到这一点。
firebase
.auth()
.createUserWithEmailAndPassword("email@domain.com", "123123")
.then(data =>
data.user.updateProfile(
displayName: this.form.name
).then(() => );
)
.catch(err =>
this.error = err.message;
);
【讨论】:
以上是关于Firebase - 检查使用 Google 帐户创建的用户是不是正在注册或登录?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 中使用 Google/Facebook 时的 Firebase Auth 重复帐户
如何将 Firebase 帐户关联到 Google Play 游戏帐户