reactjs - 无法通过 React-Native 在 Android 上使用 Firebase API-s 进行身份验证
问题描述
使用 进行身份验证时出现错误firebase
。Metro
查看控制台窗口中出现的以下错误:
错误 [错误:您的 API 密钥无效,请检查您是否正确复制了它。]
这发生react-native run-android
在我的React-Native
项目中运行时。该应用程序本身运行良好,我可以在运行项目的 Web 版本时使用所有功能(感谢react-native-web
)。
我firebase
在一个简单的配置文件中进行配置:
import firebase from 'firebase/app';
import '@firebase/auth';
import '@firebase/firestore';
const firebaseConfig = {
apiKey: process.env.REACT_APP_API_KEY,
authDomain: process.env.REACT_APP_AUTH_DOMAIN,
projectId: process.env.REACT_APP_PROJECT_ID,
storageBucket: process.env.REACT_APP_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_MESSAGING_SENDER_ID,
appId: process.env.REACT_APP_APP_ID,
measurementId: process.env.REACT_APP_MEASUREMENT_ID,
};
if (!firebase.apps.length) {
firebase.initializeApp(firebaseConfig);
}
export {firebase};
并在我的代码的各个地方导入导出的firebase
对象。如您所见,配置是从.env
文件加载的。如果其中提供的值是针对 Web 应用程序的,我可以与 API-s 交谈就好了。但是,如果我为 Android 提供配置,我会不断收到前面提到的错误。我完全不知道为什么会发生这种情况。
我尝试了各种配置组合(包括根本没有配置),但不太成功。我google-services.json
在目录中有文件android/app
,并且我相信我已将所有必需的依赖项和其他配置位正确添加到 androidgradle
文件中。
解决方案
造成这种情况的一个可能原因可能是firebaseConfig
依赖于process.env
. 如 node.js文档中所述:process.env
“...返回一个包含用户环境的对象”。在 android 上运行您的应用程序时,此环境将不可用,因为它不是运行您的应用程序的 node.js。我建议研究react-native-dotenv以可靠的方式使用环境变量。
推荐阅读
- python - 如何使用 TraversalSpec 跟踪新的任务状态变化
- angular - Nodejs+快递 | WordPress | Nginx - 静态文件服务问题
- javascript - JS中的“和`有什么区别?
- java - 集合的 RestTemplate URI 模板语法?
- html - 发送 SVG 以覆盖 CSS 中的背景
- terraform - 未知的根级密钥连接和供应商
- anylogic - 运行 100 次以上的蒙特卡罗模拟,并使用 anylogic 个人版在图形或表格上显示结果
- r - 是否可以进行敏感性分析
- apache-spark - 使用 pyspark 从 apache kafka 反序列化 avro 时为空列
- c# - WPF如何从子窗口显示隐藏的主窗口?