Firebase 快速问题:如果设置与第三方登录的用户的密码,会发生什么情况?

Firebase 快速问题:如果设置与第三方登录的用户的密码,会发生什么情况?,firebase,authentication,firebase-authentication,Firebase,Authentication,Firebase Authentication,如果您为一个最初不使用密码和电子邮件组合,而是使用第三方(如谷歌)的用户设置新密码,会发生什么情况 还有一个问题,我应该阻止用户这样做吗 谢谢您可以将不同的身份验证提供程序链接到同一用户,而不会有任何问题 使用任何身份验证提供程序或方法登录用户,然后提示用户输入电子邮件地址和新密码,然后使用电子邮件地址和密码创建AuthCredential对象: var credential = firebase.auth.EmailAuthProvider.credential(email, password

如果您为一个最初不使用密码和电子邮件组合,而是使用第三方(如谷歌)的用户设置新密码,会发生什么情况

还有一个问题,我应该阻止用户这样做吗


谢谢

您可以将不同的身份验证提供程序链接到同一用户,而不会有任何问题

使用任何身份验证提供程序或方法登录用户,然后提示用户输入电子邮件地址和新密码,然后使用电子邮件地址和密码创建AuthCredential对象:

var credential = firebase.auth.EmailAuthProvider.credential(email, password);
现在将AuthCredential对象传递给登录用户的linkWithCredential方法:

firebase.auth().currentUser.linkAndRetrieveDataWithCredential(credential).then(function(usercred) {
  var user = usercred.user;
  console.log("Account linking success", user);
}, function(error) {
  console.log("Account linking error", error);
});
如果凭据已链接到其他用户帐户,则调用linkWithCredential将失败。在这种情况下,您必须处理合并适用于您的应用程序的帐户和关联数据:

// Get reference to the currently signed-in user
var prevUser = auth.currentUser;
// Sign in user with another account
auth.signInWithCredential(credential).then(function(user) {
  console.log("Sign In Success", user);
  var currentUser = user;
  // Merge prevUser and currentUser data stored in Firebase.
  // Note: How you handle this is specific to your application

  // After data is migrated delete the duplicate user
  return user.delete().then(function() {
    // Link the OAuth Credential to original account
    return prevUser.linkWithCredential(credential);
  }).then(function() {
    // Sign in with the newly linked credential
    return auth.signInWithCredential(credential);
  });
}).catch(function(error) {
  console.log("Sign In Error", error);
});

检查官方文件

您可以毫无问题地将不同的身份验证提供程序链接到同一用户

使用任何身份验证提供程序或方法登录用户,然后提示用户输入电子邮件地址和新密码,然后使用电子邮件地址和密码创建AuthCredential对象:

var credential = firebase.auth.EmailAuthProvider.credential(email, password);
现在将AuthCredential对象传递给登录用户的linkWithCredential方法:

firebase.auth().currentUser.linkAndRetrieveDataWithCredential(credential).then(function(usercred) {
  var user = usercred.user;
  console.log("Account linking success", user);
}, function(error) {
  console.log("Account linking error", error);
});
如果凭据已链接到其他用户帐户,则调用linkWithCredential将失败。在这种情况下,您必须处理合并适用于您的应用程序的帐户和关联数据:

// Get reference to the currently signed-in user
var prevUser = auth.currentUser;
// Sign in user with another account
auth.signInWithCredential(credential).then(function(user) {
  console.log("Sign In Success", user);
  var currentUser = user;
  // Merge prevUser and currentUser data stored in Firebase.
  // Note: How you handle this is specific to your application

  // After data is migrated delete the duplicate user
  return user.delete().then(function() {
    // Link the OAuth Credential to original account
    return prevUser.linkWithCredential(credential);
  }).then(function() {
    // Sign in with the newly linked credential
    return auth.signInWithCredential(credential);
  });
}).catch(function(error) {
  console.log("Sign In Error", error);
});

检查官方文件

我一直要求用户使用电子邮件和密码登录,然后提供使用谷歌帐户登录的选项

但是,如果你想在谷歌账户登录后提供电子邮件和密码登录,你必须链接该账户,你必须要求用户登录(授权他们)


授权后,我不知道它将如何组成帐户。

我一直要求用户使用电子邮件和密码登录,然后提供使用谷歌帐户登录的选项

但是,如果你想在谷歌账户登录后提供电子邮件和密码登录,你必须链接该账户,你必须要求用户登录(授权他们)

授权后,我不知道该账户将如何构成