Firebase v8 - 如何在“firebase.default.auth”未定义时访问 EmailAuthProvider

Firebase v8 - how to access EmailAuthProvider when `firebase.default.auth` is undefined

我在 Ionic-Angular 项目上使用 AngularFire2 的 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,或者更一般地说,如何重新验证用户?

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

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

然后像这样访问 EmailAuthProvider:

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