Firebase + Typescript,无法获取accessToken关闭用户对象?

时间:2018-01-08 14:58:07

标签: typescript firebase react-native firebase-authentication

在我的MobX商店中,我似乎无法从Firebase登录获取accessToken。但数据显然是存在的。它适用于React-Native。

样品:

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);会生成包含所有用户信息的大对象。在stsTokenManager.accessToken,令牌存在。

如果我希望直接访问该属性,我会将其抛回:

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

如何获得显然存在的accessToken

1 个答案:

答案 0 :(得分:0)

问题在于user会返回一个承诺。我想将它保存到AsyncStorage,所以就是这样:

// ... 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
    }
};