“firebase.auth.EmailAuthProvider.credential”未定义(React Native)
我一直在使用 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);
});
}
这个例子有点令人困惑,但我搞明白了。用户从登录链接重定向后,应该从该窗口继续。因此,在浏览器中,
window.location.href
可以从 Firebase 接收新的 URL,并使用它来创建
credential
并从此处继续。
您无法从前端 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!
它比听起来简单!