世博会构建崩溃。 FirebaseError:Firebase:错误(auth/invalid-api-key)

问题描述 投票:0回答:1

Expo apk 构建在显示闪屏后崩溃。将我的设备连接到 android studio 的 logcat 我看到日志说
“致命异常:mqt_native_modules”
com.facebook.react.common.JavascriptException:FirebaseError:Firebase:错误(auth/invalid-api-key)。
我使用“firebase”:“^9.9.3”(sdk)

api-key 的值位于 .env 文件中,然后位于 mi app.config.js expo -> extra ->

      "apiKey": process.env.APIKEY,
      "authDomain": process.env.AUTHDOMAIN,
      "projectId": process.env.PROJECTID,
      "storageBucket": process.env.STORAGEBUCKET,
      "messagingSenderId": process.env.MESSAGINGSENDERID,
      "appId": process.env.APPID,
      "measurementId": process.env.MEASUREMENTID

当我与世博会一起运行时,一切都很好,没有崩溃。我用模拟器进行了开发构建和测试,也可以工作。

当崩溃时 logcat 不执行 console.log(firebaseConfig) 所以我看不到这些值。
我还认为问题是否出在 expo.dev(FCM V1 服务帐户密钥)中的凭据,但我尝试修改和更新 .env 中的值,但它也不起作用。

我的 firebase.js

import { initializeApp } from "firebase/app";
import { getAuth } from "firebase/auth";
import { getFirestore } from "firebase/firestore";

import Constants from "expo-constants";

// https://firebase.google.com/docs/web/setup#available-libraries

// For Firebase JS SDK v7.20.0 and later, measurementId is optional
const firebaseConfig = {
  apiKey: Constants.expoConfig.extra.apiKey || '',
  authDomain: Constants.expoConfig.extra.authDomain || '',
  projectId: Constants.expoConfig.extra.projectId || '',
  storageBucket: Constants.expoConfig.extra.storageBucket || '',
  messagingSenderId: Constants.expoConfig.extra.messagingSenderId || '',
  appId: Constants.expoConfig.extra.appId || '',
  measurementId: Constants.expoConfig.extra.measurementId || ''
};

// Initialize Firebase
console.log(firebaseConfig);
const app = initializeApp(firebaseConfig);

// Initialize Firebase services
const database = getFirestore(app);
const auth = getAuth(app);

const firebaseServices = { database, auth };

export default firebaseServices;

我的.env(位于根目录中)

URL_BACK=xxx
APIKEY=xxx
AUTHDOMAIN=xxx
PROJECTID=xxx
STORAGEBUCKET=xxx
MESSAGINGSENDERID=xxx
APPID=xxx
MEASUREMENTID=xx

这是我的eas.json

{
  "build": {
    "development": {
      "android": {
        "buildType": "apk",
        "developmentClient": true,
        "gradleCommand": ":app:assembleDebug"
      }
    },
    "preview": {
      "android": {
        "buildType": "apk"
      }
    },
    "preview2": {
      "android": {
        "gradleCommand": ":app:assembleRelease"
      }
    },
    "production": {
      "android": {
        "buildType": "apk"
      }
    }
  }
}
reactjs react-native firebase-authentication expo eas
1个回答
0
投票
  1. 在您的配置文件之一中,设置
    developmentClient: true
    buildType: "apk"
    ,然后构建该配置文件。
  2. 将该版本安装到设备或模拟器。
  3. 在电脑上启动Expo开发系统(Metro)(
    npx expo start
  4. 在您的设备/模拟器上启动应用程序。 由于它是开发客户端版本,因此它会给您一个启动屏幕,要求连接到您的 Expo 开发系统。 您所做的任何 JS 代码更改都将同步到您的开发客户端,并且 JS 代码中的任何
    console.log()
    语句现在都将显示在 Expo 控制台中。
  5. 添加
    console.log()
    以查看
    firebaseConfig
    中的值是否是您在调用
    initializeApp(firebaseConfig)
  6. 之前所期望的值

我敢打赌,这些价值观并不是你所期望的那样。 API 密钥值可能不正确(我猜它们是

undefined
),它映射到您收到的特定错误消息(“invalid-api-key”)。

© www.soinside.com 2019 - 2024. All rights reserved.