首页 > 解决方案 > Firebase v8 - 当`firebase.default.auth`未定义时如何访问EmailAuthProvider

问题描述

AngularFire2在 Ionic-Angular 项目中使用 Firebase 身份验证。我需要能够在需要时重新验证我的用户,似乎唯一的方法是获取用户的凭据,该凭据只能通过 获取firebase.auth.EmailAuthProvider,该对象不是 的一部分AngularFire,而只是firebase其自身。

我为此使用了 firebase v8,该EmailAuthProvider对象应该在firebase.default.auth.EmailAuthProvider. 但是,我知道这firebase.default.auth是未定义的,因此无法访问EmailAuthProvider. 我找到的唯一解决方案是恢复到 firebase v7,后者可以通过firebase.auth.EmailAuthProvider. 由于其他兼容性问题,我还不能升级到 firebase v9,也不想保留 v7,因为它给了我大量的中高漏洞。

编辑

我以这种方式获取凭据:

import * as firebase from "firebase/app";

...

firebase.default.auth.EmailAuthProvider.credential(email, password)

我收到以下错误:

Uncaught TypeError: Cannot read properties of undefined (reading 'EmailAuthProvider')

我的 package.json 文件有"@angular/fire": "^6.1.5""firebase": "^8.10.0"

TLDR

在 Firebase v8 中,如何访问EmailAuthProvider,或者更一般地说,如何重新验证用户身份?

标签: javascriptangularfirebasefirebase-authenticationangularfire2

解决方案


尝试更改您的导入,如下所示:

import firebase from "firebase/app"; 
import "firebase/auth" // <-- make sure you have auth imported

然后像这样访问 EmailAuthProvider:

firebase.auth.EmailAuthProvider.credential(email, password)

推荐阅读