Firebase + Typescript,无法从用户对象中获取 accessToken?

Posted

技术标签:

【中文标题】Firebase + Typescript,无法从用户对象中获取 accessToken?【英文标题】:Firebase + Typescript, cannot get accessToken off user object? 【发布时间】:2018-06-17 13:54:58 【问题描述】:

在我的 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】:

问题是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
    
;

【讨论】:

以上是关于Firebase + Typescript,无法从用户对象中获取 accessToken?的主要内容,如果未能解决你的问题,请参考以下文章

SyntaxError:无法使用 typescript 在模块 firebase 部署错误之外使用 import 语句

如何使用 Typescript 从 firebase-admin 导入 FieldValue?

从 TypeScript 初始化 Firebase Admin SDK 失败

使用 Angular2、angularfire2 和 Typescript 从 Firebase 对象中获取数据

如何让 TypeScript 从 node_modules 捆绑第 3 方库?

迁移到打字稿后,Firebase 云功能无法正常工作