Angular10迁移至11后afAuth.authState.verifyPasswordResetCode()报错求助
问题解决方法
核心原因
afAuth.authState 是一个Observable,仅用于监听用户认证状态的变化,而 verifyPasswordResetCode() 是 Firebase Auth 实例本身的方法,并非这个 Observable 的属性,直接调用自然会触发类型错误。
正确调用方式
你需要从 AngularFireAuth 实例中获取底层的 Firebase Auth 对象,再调用该方法:
1. 注入AngularFireAuth
在组件或服务中正常注入依赖:
import { AngularFireAuth } from '@angular/fire/auth'; constructor(private afAuth: AngularFireAuth) { }
2. 调用verifyPasswordResetCode方法
通过 afAuth.auth 获取底层 Auth 实例,再执行验证操作:
async verifyResetCode(code: string) { try { const auth = await this.afAuth.auth; if (auth) { const email = await auth.verifyPasswordResetCode(code); // 验证成功,可继续执行重置密码逻辑 console.log('验证码有效,关联邮箱:', email); } } catch (error) { console.error('验证码验证失败:', error); } }
也可以用 Promise 链式调用写法:
verifyResetCode(code: string) { this.afAuth.auth.then(auth => { if (auth) { auth.verifyPasswordResetCode(code) .then(email => console.log('关联邮箱:', email)) .catch(error => console.error('验证失败:', error)); } }); }
额外注意事项
- 当前
@angular/fire@6.1.5和firebase@7.24.0的版本组合是兼容的,无需调整依赖版本。 verifyPasswordResetCode不需要依赖用户登录状态,无需订阅authState即可直接调用。
内容的提问来源于stack exchange,提问作者Midhun Joseph
相关产品推荐
相关产品推荐

