Angular Web App-当监视用户状态更改公共用户时,使用Facebook的Firebase登录返回null-应用程序是facebook中的实时模式

问题描述 投票:-1回答:1

我们遇到了一般公众用户能够使用firebase和facebook的signinwithredirect登录到我们的角度水疗中心的问题。

[当我使用自己的Facebook帐户(一个是developer.facebook中应用程序的管理员)时,它可以正确登录,并且我得到了一个Firebase用户。

[当另一个用户尝试登录时,它重定向到Facebook询问Auth,然后在给定重定向到应用程序后,只有该用户返回null。

facebook中的应用程序状态为实时,因此不会出现任何访问​​问题。但是由于它可以与我的管理员登录名一起使用,因此请确保其相关

以前有没有人看过这个问题?

“ @ angular / core”:“〜8.1.1”,“ @ angular / fire”:“ ^ 5.2.1”,“ firebase”:“ ^ 6.3.0”,

angular firebase facebook-login
1个回答
0
投票

问题与已经使用其他身份验证方法注册的电子邮件有关。但由于重定向,目前尚不清楚。

我现在添加了一种方法来检查重定向错误并在这种情况下管理错误消息。

firebaseCheckRedirect(): any {
    this.afAuth.auth.getRedirectResult().catch(error => {
      if (error.code === 'auth/account-exists-with-different-credential') {
        const pendingCred = error.credential;
        // The provider account's email address.
        const email = error.email;
        // Get sign-in methods for this email.
        this.afAuth.auth.fetchSignInMethodsForEmail(email).then(methods => {
          console.log(methods);
          switch (methods[0]) {
            case 'password': {
              this.snackbar.push(new SnackbarMessage(this.translate.instant('login.error.user-exists-email'), 'error'));
              break;
            }
            case 'facebook.com': {
              this.snackbar.push(new SnackbarMessage(this.translate.instant('login.error.user-exists-facebook'), 'error'));
              break;
            }
            case 'google.com': {
              this.snackbar.push(new SnackbarMessage(this.translate.instant('login.error.user-exists-google'), 'error'));
              break;
            }
            default: {
              this.snackbar.push(new SnackbarMessage(this.translate.instant('login.error.default'), 'error'));
              break;
            }
          }
        });
      }
    });
  }

关于此错误的一些有用链接https://firebase.google.com/docs/auth/web/facebook-login#handling-account-exists-with-different-credential-errors

© www.soinside.com 2019 - 2024. All rights reserved.