相关疑难解决方法(0)

使用"每个电子邮件地址一个帐户"时出现FirebaseAuthInvalidCredentialsException

...如果您不允许多个帐户使用相同的电子邮件地址,则用户无法创建使用电子邮件地址为ex@gmail.com的Google帐户登录的新帐户(如果已有帐户使用该帐户)电子邮件地址ex@gmail.com和密码.

我能够使用Google提供商登录已通过电子邮件提供商注册的同一封电子邮件,因此Google提供商更换了电子邮件提供商,后者无法使用FirebaseAuthInvalidCredentialsException登录:密码无效或用户没有密码..

重现步骤:

使用电子邮件提供商注册 - >注销- >使用Google提供商登录 - >退出

基本上它不应该允许将一个提供者替换为另一个提供者并抛出FirebaseAuthUserCollisionException:该电子邮件地址已被另一个帐户使用.

我用于登录/注销的一些代码:

  public void signUpEmail(String email, String password) {
    mFirebaseAuth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, task -> {
          if (!task.isSuccessful()) {
            Log.e("signUpWithEmail", task.getException());
          }
        });
  }

  private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mFirebaseAuth.signInWithCredential(credential)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
          @Override public void onComplete(@NonNull Task<AuthResult> task) {
          if (!task.isSuccessful()) {
            Log.e("signInWithCredential", task.getException());
          }
        }
    });
  }

  public void signInEmail(String email, String password) {
    mFirebaseAuth.signInWithEmailAndPassword(email, password) …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-authentication google-signin

10
推荐指数
2
解决办法
3787
查看次数

Firebase JS API auth - account-exists-with-different-credential

我们在尝试解决此问题时遇到了实际问题,因此希望获得一些Firebase帮助/解决了同样问题的帮助.

该应用程序是React Native(0.43.2)并使用Firebase JS API(最新)

我们提供Facebook和Google身份验证.工作良好.

但是,如果用户:

  1. 用Facebook登录(没关系)
  2. 之后,与谷歌签约(也没关系)
  3. 之后,尝试用Facebook登录 - BOOM!不太好,Firebase会返回此错误:

auth/account-exists-with-different-credential

从阅读文档和SO上的一些帖子,我们认为以下是正确的,但显然不是因为我们得到了相同的身份验证错误.

...error returned by Firebase auth after trying Facebook login...

const email = error.email;
const pendingCred = error.credential;

firebase.auth().fetchProvidersForEmail(email)
.then(providers => {
   //providers returns this array -> ["google.com"]
   firebase.auth().signInWithCredential(pendingCred)
   .then(result => {
       result.user.link(pendingCred)
   })
   .catch(error => log(error))
Run Code Online (Sandbox Code Playgroud)

对signInWithCredential的调用抛出相同的错误auth/account-exists-with-different-credential.

任何人都可以帮助指出我们在这个实现中做错了什么吗?非常感激.

javascript firebase firebase-authentication

8
推荐指数
4
解决办法
3264
查看次数

Firebase,由同一电子邮件登录不同的提供商

我希望我的用户可以使用许多不同的提供商登录,但如果他们只使用一个电子邮件地址,他们将获得相同的结 例如,在stackoverflow中我可以通过Facebook,Google登录...但我仍然可以保留我的个人资料以及我的帖子......

在Firebase Web中,例如,如果我的用户使用电子邮件/密码提供商创建了帐户,则他的电子邮件="ex@gmail.com"password ="123456".此帐户有uid ="account1",我使用此uid作为密钥在Firebase数据库中存储有关他的其他信息.

有一天,他选择由Google提供商和Facebook提供商登录(仍然是ex@gmail.com),我在auth设置中测试了2个案例:

  • "防止使用相同的电子邮件地址创建多个帐户":新的Google登录将覆盖旧的"account1",由于错误,我无法使用"ex@gmail.com"创建新的Facebook帐户:"已存在相同的帐户电子邮件地址".这两个我都不想发生

  • "允许使用相同的电子邮件地址创建多个帐户":使用此选项我可以使用相同的电子邮件地址创建许多帐户,但他们有不同的uid,我不知道如何将这些uid链接到"account1"?在Google和Facebook登录后,我也无法收到电子邮件(email = null).

所以firebase可以帮助我在很多应用程序中做我喜欢的事情(通过许多不同方式登录但结果相同)?

firebase angularfire firebase-authentication firebase-realtime-database

5
推荐指数
1
解决办法
2414
查看次数