我正在使用 V9 SDK 开发一个带有 firebase 身份验证的 React Native 应用程序。一切都工作正常,除了当我想在身份验证中添加持久性时。
我尝试了多种方法来添加它,但没有一个起作用。下面是我尝试过的最新、最干净的方法。问题是,当我使用此代码(添加持久性,否则它工作正常)时,我遇到错误:
内部断言失败:需要类定义
// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
import { getAuth, browserLocalPersistence, setPersistence } from "firebase/auth";
import { getFirestore } from "firebase/firestore";
// Your web app's Firebase configuration
const firebaseConfig = {
apiKey: "XXX",
authDomain: "XXX",
projectId: "XXX",
storageBucket: "XXX",
messagingSenderId: "XXX",
appId: "XXX",
measurementId: "XXX",
};
// Initialize Firebase
const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
// Enable Firebase persistence
const enableFirebasePersistence = async () => {
try {
await setPersistence(auth, browserLocalPersistence);
} catch (error) {
// Handle errors here
console.log("Error enabling Firebase persistence:", error);
}
};
// Call the function to enable persistence
enableFirebasePersistence();
export const db = getFirestore(app);
export default app;
我刚刚在另一篇文章中找到了答案,尝试了数千个不同的关键字哈哈。
看来问题出在新版本的expo上。在初始化 firebase 时使用 AsyncStorage 对我有用。这是我找到解决方案的帖子的链接:onAuthStateChanged now returns null in react-native
这里是链接到的答案franjuju的摘要,因为您可能会为
setPersistence
调用它:
import { getReactNativePersistence, setPersistence } from 'firebase/auth';
import ReactNativeAsyncStorage from '@react-native-async-storage/async-storage';
const localPersistence = getReactNativePersistence(ReactNativeAsyncStorage);
...
export const auth = getAuth(app);
setPersistence(auth, localPersistence);