在我的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
?
答案 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
}
};