【问题标题】:Firebase's One account per email address allows Google OAuth to replace the email/password account without consent [duplicate]Firebase的每个电子邮件地址一个帐户允许Google OAuth在未经同意的情况下替换电子邮件/密码帐户[重复]
【发布时间】:2020-05-05 11:08:20
【问题描述】:

我目前在 Firebase 身份验证上设置了“每个电子邮件地址一个帐户”设置。问题是,当用户使用已用于创建电子邮件/密码帐户的同一电子邮件地址登录 Google OAuth 时,Google OAuth 会自动将电子邮件/密码提供商替换为自己的。

我在错误处理过程中设置了以下设置,以便可以提示用户选择是否链接两个帐户:

 if (error.code === 'auth/email-already-in-use' || error.code === 'auth/credential-already-in-use' || error.code === 'auth/account-exists-with-different-credential')

但 Google OAuth 甚至不会导致我发现任何错误。它简单而安静地替换现有帐户。

【问题讨论】:

标签: javascript firebase react-native firebase-authentication google-oauth


【解决方案1】:

默认情况下,Firebase 允许每位用户发送一封电子邮件。如果已经使用电子邮件和密码注册的用户稍后使用 Google OAuth 登录。这些用户详细信息将更新为 Google OAuth 用户详细信息。此外,电子邮件会自动验证。这是大多数应用程序的工作方式。 您可以尝试这样做来防止这种情况发生

 const googlesignin =document.querySelector('#g-A-oauth')
 googlesignin.addEventListener('click', e=>{
      e.preventDefault()
 admin.auth().getUserByEmail('exampşe@email.com')
  .then(function(userRecord) {
    //if user email exist do something
    console.log('you already signin with wmail and password')
  })
  .catch(function(error) {
    firebase.auth().signInWithPopup(provider).then(function(result) {
  // This gives you a Google Access Token. You can use it to access the Google API.
  var token = result.credential.accessToken;
  // The signed-in user info.
  var user = result.user;
  // ...
}).catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // The email of the user's account used.
  var email = error.email;
  // The firebase.auth.AuthCredential type that was used.
  var credential = error.credential;
  // ...
});

  });
})

【讨论】:

  • 我的问题是它不会引发错误,因此您的示例中的 signInWithPopup 不会被触发
  • 好吧,您可以获取用户电子邮件并检查以前用于登录的方法,然后您可以选择注册用户或引发错误。祝你好运
  • 我遇到了类似的问题。我想同时使用具有相同 uid 的 google 和电子邮件/密码。但 firebase 不断用 google 替换电子邮件。
猜你喜欢
  • 2017-06-14
  • 2016-11-12
  • 1970-01-01
  • 2019-08-22
  • 2015-08-30
  • 2022-09-28
  • 2023-03-09
  • 2022-11-25
  • 1970-01-01
相关资源
最近更新 更多