开发者问题收集

“firebase.auth.EmailAuthProvider.credential”未定义(React Native)

2021-07-03
786

我一直在使用 Firebase Auth(仅限纯电子邮件和密码)开展我的第一个 React Native 项目。 登录、退出、重置密码等...一切都很好,但我遇到了一件事,我需要有关删除用户的帮助。 由于删除用户是一个“敏感”请求,Firebase Auth 要求在实际删除用户之前重新验证用户身份。 这就是我不知道该怎么做的地方。即使是 文档 也没有提供太多信息。他们确实说:“TODO(你):提示用户重新提供他们的登录凭据”。

ErrorMessage : TypeError:未定义不是对象(评估'_firebase.auth.EmailAuthProvider.credential')

我的firebase.js :

import firebase from 'firebase';

const firebaseConfig = { //key hidden here for security reasons
    apiKey: apiKey,
    authDomain: authDomain,
    projectId: projectId,
    storageBucket: storageBucket,
    messagingSenderId: messagingSenderId,
    appId: appId,
    measurementId: measurementId
  };

const app = !firebase.apps.length
  ? firebase.initializeApp(firebaseConfig)
  : firebase.app();
  
  const db = app.firestore();
  const auth = firebase.auth();

export {db, auth};

我的component.js :

...
import { auth } from '../firebase/firebase';
...
    const deleteUser = () => {
        const user = auth.currentUser;
        const credential = auth.EmailAuthProvider.credential(userEmail,userProvidedPassword);
        user.reauthenticateWithCredential(credential).then(() => {
            user.delete().then(() => {
                auth.signOut();
            }).catch((error) => {
                console.log(error.message);
            });
          }).catch((error) => {
            console.log(error.message);
        });
    }
2个回答

这个例子有点令人困惑,但我搞明白了。用户从登录链接重定向后,应该从该窗口继续。因此,在浏览器中, window.location.href 可以从 Firebase 接收新的 URL,并使用它来创建 credential 并从此处继续。

Long.H
2024-01-24

您无法从前端 React Native 删除用户!

相反,有 firebase admin SDK 允许您删除用户,但必须从后端完成。我相信这个 Firebase Admin SDK 链接 会回答您的问题。

此外,如果您没有后端并且只是依赖 Firebase,请检查 Firebase Cloud Functions

Cloud Functions allows you to create a function in Firebase that you can call from React Native using Firebase SDK and perform delete user operation also you could watch for a collection and send notification and do more stuff!

它比听起来简单!

Alish Giri
2021-07-04