[英]Password is gone when logging in a firebase account that was created using Email and Password
[英]Firebase - check if user created with Google Account is signing up or logging in?
我正在尝试创建一个 Web 应用程序,您可以在其中登录并使用 google 帐户注册一个帐户。 我已经设法做到了,因此他们可以使用 signInWithPopup(provider) 登录,但不确定如何实现注册。 有什么建议? 或者知道我可以使用的firebase中的任何功能吗?
使用 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 帐户是否使用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.