首页 > 解决方案 > 无法通过 React-Native 在 Android 上使用 Firebase API-s 进行身份验证

问题描述

使用 进行身份验证时出现错误firebaseMetro查看控制台窗口中出现的以下错误:

错误 [错误:您的 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文件中。

标签: reactjsfirebasereact-native

解决方案


造成这种情况的一个可能原因可能是firebaseConfig依赖于process.env. 如 node.js文档中所述:process.env“...返回一个包含用户环境的对象”。在 android 上运行您的应用程序时,此环境将不可用,因为它不是运行您的应用程序的 node.js。我建议研究react-native-dotenv以可靠的方式使用环境变量。


推荐阅读