繁体   English   中英

Firebase - 检查使用 Google 帐户创建的用户是否正在注册或登录?

[英]Firebase - check if user created with Google Account is signing up or logging in?

我正在尝试创建一个 Web 应用程序,您可以在其中登录并使用 google 帐户注册一个帐户。 我已经设法做到了,因此他们可以使用 signInWithPopup(provider) 登录,但不确定如何实现注册。 有什么建议? 或者知道我可以使用的firebase中的任何功能吗?

使用 Google 登录或任何其他提供商时,没有任何单独的loginsign 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 帐户是否使用additionalUserInfo.isNewUser链接到任何现有用户,然后按照这篇文章将您的 google 帐户与通过您的网站在本地创建的帐户链接起来:https:// firebase.google.com/docs/auth/web/account-linking?hl=lt

一旦您的应用程序中有 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;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM