Firebase stop listening onAuthStateChanged

James Gilchrist picture James Gilchrist · May 22, 2016 · Viewed 29.2k times · Source

As of version ^3.0.0, I'm having a difficult time removing the auth state change listener.

To start the listener per the documentation:

firebase.auth().onAuthStateChanged(function (user) {
    // handle it
});

However, I cannot find anywhere in the documentation that refers to a remove auth state change listener. There is peculiar function on the Firebase.Auth class called removeAuthTokenListener. Unfortunately it's not documented (firebase docs reference).

Via your browser's web console.

var auth = firebase.auth();
auth.removeAuthTokenListener;

prints a function definition that takes one parameter. I tried to do the following:

this.authListener = firebase.auth().onAuthStateChanged(function (user) {...});
firebase.auth().removeAuthTokenListener(this.authListener);

but that didn't do anything.

Answer

Frank van Puffelen picture Frank van Puffelen · May 22, 2016

According to the documentation, the onAuthStateChanged() function returns

The unsubscribe function for the observer.

So you can just:

var unsubscribe = firebase.auth().onAuthStateChanged(function (user) {
    // handle it
});

And then:

unsubscribe();