Angular4集成Firebase时如何解决getToken已弃用问题?
解决Firebase
getToken() 弃用问题 嘿,这个问题我刚好碰到过!Firebase 确实把 firebase.User.prototype.getToken() 标记为弃用了,官方推荐用 getIdToken() 来替代,我帮你把代码改好,顺便优化下结构让它更可靠:
优化后的链式调用版本
signinUser(email: string, password: string) { firebase.auth().signInWithEmailAndPassword(email, password) .then(response => { // 直接用登录返回的user对象,比currentUser更稳妥 return response.user.getIdToken(); }) .then((token: string) => { this.token = token; }) .catch(error => console.log(error)); }
更简洁的 async/await 版本(推荐)
如果你习惯用异步函数的写法,这个版本可读性更强:
async signinUser(email: string, password: string) { try { const response = await firebase.auth().signInWithEmailAndPassword(email, password); const token = await response.user.getIdToken(); this.token = token; } catch (error) { console.log(error); } }
几个关键点说明:
- 直接替换
getToken()为getIdToken()就能解决弃用警告,两者功能完全一致,只是API命名更规范了 - 我把原来的
firebase.auth().currentUser换成了response.user,这是因为登录成功后返回的user对象是即时可用的,避免了currentUser可能存在的异步更新延迟导致的null问题 - async/await 写法能避免嵌套的"回调地狱",代码逻辑更清晰
内容的提问来源于stack exchange,提问作者Ace Valdez
相关产品推荐
相关产品推荐

