Firebase + Typescript, kan inte få accessToken från användarobjektet?


I min MobX-butik verkar jag inte kunna få accessToken från Firebase-inloggningen. Data finns dock tydligt där. Det är för React-Native.

Exempel :

class GlobalStore {

    @observable loggedIn: boolean;

    @observable user: any;

    @action firebaseStatup = () => {

        firebase.initializeApp({
            apiKey: "somestring",
            authDomain: "app.firebaseapp.com",
            databaseURL: "https://app.firebaseio.com",
            projectId: "app",
            storageBucket: "app.appspot.com",
            messagingSenderId: "1234
        });
        firebase.auth().onAuthStateChanged((user) => {
            this.loggedIn = !!user;
            if (user) {
                this.user = firebase.auth().currentUser;
                console.log(this.user); // Returns an Object that has property stsTokenManager.accessToken which is the JWT?
                console.log(this.user.stsTokenManager.accessToken)
            }
        })
    };

console.log(this.user); resulterar i ett stort objekt med all användarinformation. På stsTokenManager.accessToken finns token.

om jag vill få direkt åtkomst till egendomen, får jag detta tillbaka:

undefined is not an object (evaluating '_this.user.stsTokenManager.accessToken')

Hur får jag accessToken som uppenbarligen finns där?

Svar #1

Problemet var att user returnerar ett löfte. Jag ville spara det till AsyncStorage, så det här var sättet:

// ... Firebase stuff

    firebase.auth().onAuthStateChanged((user) => {
        this.loggedIn = !!user;
        if (user) {
            this.user = firebase.auth().currentUser;
            user.getIdToken()
                .then(token => this.saveTokenToStorage(token))

        }
    });

@action async saveTokenToStorage(token: string) {
    try {
        await AsyncStorage.setItem('authentication', token);
    } catch (error) {
        // Error saving data
    }
};