Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Link anonymous user with logged in user, possible bug. componentDidMount not called anymore.

Aperta
#64 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
firebase, javascript, react

Direzione di ricerca

Riprodurre il flusso clean-account con autoUpgradeAnonymousUsers abilitato, usando il componente Login, LoginProvider, StyledFirebaseAuth e i callback uiConfig mostrati. Tracciare i callback di loginProvider.register e la transizione dello stato isSignedIn per determinare perché componentDidUpdate non viene più attivato; il lavoro è completato quando la causa e il comportamento di redirect previsto sono documentati o verificati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Hello,
first of all Happy Easter.

I think there is a bug when using autoUpgradeAnonymousUsers: true in uiConfig.

I will paste my code and I'll explain how to reproduce.

initialization code:

const uiConfig = {
  signInFlow: 'popup',
  c
  signInOptions: [
    firebase.auth.GoogleAuthProvider.PROVIDER_ID,
  ],
  callbacks: {
    signInSuccessWithAuthResult: () => {
      console.log('signInSuccessWithAuthResult')
      return false
    },
    signInFailure: (error: any) => {
      console.log('sign')
      if (error.code != 'firebaseui/anonymous-upgrade-merge-conflict') {
        return Promise.resolve();
      }
      var cred = error.credential;
      return firebase.auth().signInWithCredential(cred);
    }

  },
};

const loginProvider = new FirebaseLoginProvider(
  firebaseApp, uiConfig
);

loginProvider.register((user) => {
  if (user == null) {
    console.log('null')
    firebaseApp.auth().signInAnonymously().catch((error) => {
      console.log(error);
    })
  } else {
    console.log("Anony " + user.isAnonymous)
  }
})

And this is my react component:

import 'firebase/auth';
import './firebase-global.css';

import * as React from 'react';

import { RouteComponentProps, withRouter } from "react-router-dom";

import LoginProvider from './LoginProvider';
import StyledFirebaseAuth from 'react-firebaseui/StyledFirebaseAuth';

interface Props {
};

interface State {
  isSignedIn: boolean
}

interface HomeProps extends RouteComponentProps<Props> {
  loginProvider: LoginProvider
}

class Login extends React.Component<HomeProps, State> {

  state = {
    isSignedIn: false
  }

  constructor(props: HomeProps) {
    super(props);
  }

  componentDidMount() {
    console.log('componentDidMount')
    this.props.loginProvider.register((user) => {
      if (user != null && !user.isAnonymous) {
        this.setState({ isSignedIn: true } as State);
      } else {
        this.setState({ isSignedIn: false } as State);
      }
    })
  }

  componentDidUpdate() {
    console.log('componentDidUpdate')
    this.goBackWhenLoggedIn();
  }

  componentWillUnmount() {
    console.log('componentWillUnmount')
    this.props.loginProvider.unregister();
  }

  render() {
    const signedIn = this.state.isSignedIn

    return (
      <div className='container'>
        {!signedIn &&
          <div>
            <StyledFirebaseAuth
              className='firebaseUi'
              uiConfig={this.props.loginProvider.actualConfig()}
              firebaseAuth={this.props.loginProvider.actualProvider()} />
          </div>
        }
      </div>
    );
  }

  private goBackWhenLoggedIn() {
    if (this.state.isSignedIn) {
      // this.props.loginProvider.promoteAccount()
      this.props.history.goBack()
    }
  }

}
export default withRouter(Login);

After login, before adding the option autoUpgradeAnonymousUsers: true for which I also had to add

    signInFailure: (error: any) => {
      console.log('sign')
      if (error.code != 'firebaseui/anonymous-upgrade-merge-conflict') {
        return Promise.resolve();
      }
      var cred = error.credential;
      return firebase.auth().signInWithCredential(cred);
    }

based on documentation from Handling anonymous user upgrade merge conflicts paragraph on https://firebase.google.com/docs/auth/web/firebaseui

I don't get redirected successfully WHEN I have a clean situation for my user meaning I delete my anonymous user and my logged in user from firebase console (Manage users).

Before, after logging in on Google, componentDidUpdate was called and I could succesfully be redirected to the last page using react router. Now I can't anymore.

What I did to solve the issue is to use window.history.back(); inside signInSuccessWithAuthResult function.

Am I doing something wrong with the configuration? I can't understand why componentDidUpdate is not fired anymore.

Lingua principale
JavaScript
Stelle
1.3k
Fork
246
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di firebase/firebaseui-web-react

Tutte le issue di firebase/firebaseui-web-react

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.