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