首页 > 解决方案 > 如何从我的 nodejs 后端检索 firebase api 密钥?

问题描述

我正在构建一个将使用 Firebase Auth 的 React 应用程序。我将我的 API 密钥存储在 .env 文件中,但我在 React 文档中读到它不安全,所以我在我的 NodeJS 服务器上创建了一个自定义和私有路由,这是一个简单的GET请求,它向我发送数据我需要(钥匙、投影仪等)。我认为这是最安全的方法,对吧?

现在我正在尝试从我的后端获取这些数据,并且我可以使用console.log例如,但我无法将它与 Firebase 功能集成。它一直说它是未定义的。

这是我到目前为止所尝试的:

import * as firebase from 'firebase/app';
import 'firebase/auth';

const API_URL = process.env.REACT_APP_API_URL;
let res;
export async function getFirebaseKeys() {
  const response = await fetch(`${API_URL}/api/get`);
  res = response.json();
}
getFirebaseKeys();
//I have also tried to use firebase.OnLog but no success.
//I have also tried to wrap firebase.initializeApp and my fetch in a function but it breaks 
const app = firebase.initializeApp({
  apiKey: res.apiKey,
  authDomain: res.domain,
  databaseURL: res.database,
  projectId: res.projectId,
  storageBucket: res.storageBucket,
  messagingSenderId: res.senderId,
});

export default app;

这是我第一个使用 Firebase 和 React 的项目,所以如果我遗漏了一些明显的东西,我很抱歉。

标签: node.jsreactjsfirebasefirebase-authentication

解决方案


您现在尝试做的实际上并不比将 Firebase 配置放入源(它打算去的地方)更安全。将它隐藏在 GET 后面只会让人们通过另一个步骤来获得它,如果他们想要的话。

只要您还使用 Firebase 身份验证登录用户,并使用安全规则来确定谁可以访问项目中的哪些数据,将 Firebase 配置交给公众并没有什么不安全的。

做任何最方便的事——安全不是这里的问题。

另请参阅:向公众公开 Firebase apiKey 是否安全?


推荐阅读