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 对象中获取数据