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);
});
检查官方文件 我一直要求用户使用电子邮件和密码登录,然后提供使用谷歌帐户登录的选项 但是,如果你想在谷歌账户登录后提供电子邮件和密码登录,你必须链接该账户,你必须要求用户登录(授权他们)
授权后,我不知道它将如何组成帐户。我一直要求用户使用电子邮件和密码登录,然后提供使用谷歌帐户登录的选项 但是,如果你想在谷歌账户登录后提供电子邮件和密码登录,你必须链接该账户,你必须要求用户登录(授权他们) 授权后,我不知道该账户将如何构成