signInSuccessWithAuthResult не вызывается из компонента Angular - PullRequest
0 голосов
/ 06 ноября 2019

Я использую библиотеку firebaseui-angular для аутентификации в моем угловом приложении. Я пытаюсь перенаправить пользователя после успешного входа в систему,

Хорошо известный жестко закодированный способ заключается в следующем, который работает абсолютно нормально,

const firebaseUiAuthConfig: firebaseui.auth.Config = {
  callbacks: {
    signInSuccessWithAuthResult: function(authResult, redirectUrl) {
      // User successfully signed in.
      // Return type determines whether we continue the redirect automatically
      // or whether we leave that to developer to handle.
      console.log('Father Callback!');
      return true;
    }
  },
  signInSuccessUrl: '/',
  signInFlow: 'popup',
  signInOptions: [
    firebase.auth.GoogleAuthProvider.PROVIDER_ID,,
    {
      requireDisplayName: false,
      provider: firebase.auth.EmailAuthProvider.PROVIDER_ID
    },
    firebaseui.auth.AnonymousAuthProvider.PROVIDER_ID
  ],
  tosUrl: '<your-tos-link>',
  privacyPolicyUrl: '<your-privacyPolicyUrl-link>',
  credentialHelper: firebaseui.auth.CredentialHelper.NONE
};

Но это жестко запрограммировано для перенаправления на / послевместо этого, я хочу, чтобы пользователь приземлился на выбранную страницу после входа в систему, поэтому я пытаюсь вызвать signInSuccessWithAuthResult в компоненте следующим образом:

//HTML

    <firebase-ui 
    (signInSuccessWithAuthResult)="successCallback($event)" 
    (signInFailure)="errorCallback($event)">
    </firebase-ui>

//TS

  returnUrl: string;

  constructor(
    public auth: AuthService, 
    private router: Router,
    private route: ActivatedRoute,
    public afAuth: AngularFireAuth) {}

  ngOnInit() {
    this.route.queryParams.subscribe(
      retUrl => {
        this.returnUrl = retUrl.returnUrl || '/';
        console.log("You are set to redirected to "+this.returnUrl);
      }
    );
    this.afAuth.authState.subscribe(this.firebaseAuthChangeListener);
  }

  private firebaseAuthChangeListener(response) {
    // if needed, do a redirect in here
    if (response) {
      console.log('Logged in :)');
    } else {
      console.log('Logged out :(');
    }
  }

  successCallback(signInSuccessData: FirebaseUISignInSuccessWithAuthResult) {
    console.log("Logged in! Redirecting to "+this.returnUrl);
    this.router.navigateByUrl(this.returnUrl);
  }

  errorCallback(errorData: FirebaseUISignInFailure) {
    console.log("Login failure!");
  }

Как уже упоминалось здесь . Но метод (signInSuccessWithAuthResult)="successCallback($event)" из компонента вызывается только при входе из Google, а не из электронной почты или анонима!

Что мне не хватает?

EDIT

Единственное различие между входом в Gmail и входом в систему Email & Anonymous заключается в том, что Gmail открывает всплывающее окно, в котором эти бедные Anonymous и Email не могут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...