Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firestore管理员未在Electron应用程序上进行身份验证_Javascript_Firebase_Google Cloud Firestore_Electron Forge - Fatal编程技术网

Javascript Firestore管理员未在Electron应用程序上进行身份验证

Javascript Firestore管理员未在Electron应用程序上进行身份验证,javascript,firebase,google-cloud-firestore,electron-forge,Javascript,Firebase,Google Cloud Firestore,Electron Forge,我正在创建一个电子应用程序作为管理员的界面。目前正在使用实时数据库和firestore。我正在使用firebase admin sdk和一个本地.json服务帐户文件来连接实时数据库并执行所有不受限制的读/写操作。一切正常。但是,在尝试读取/写入Firestore数据库时,我收到一个错误: 您需要传递auth实例才能在浏览器中使用gRPC回退客户端。使用google auth库中的OAuth2Client 我确实在网上看到其他人也有类似的问题,我尝试了以下方法: npm重建 安装@grcp/g

我正在创建一个电子应用程序作为管理员的界面。目前正在使用实时数据库和firestore。我正在使用firebase admin sdk和一个本地.json服务帐户文件来连接实时数据库并执行所有不受限制的读/写操作。一切正常。但是,在尝试读取/写入Firestore数据库时,我收到一个错误:

您需要传递auth实例才能在浏览器中使用gRPC回退客户端。使用google auth库中的OAuth2Client

我确实在网上看到其他人也有类似的问题,我尝试了以下方法:

  • npm重建
  • 安装@grcp/grcp包
  • 安装GoogleAuth库
不幸的是,我仍然得到同样的回答。我还收到许多以下警告消息(每个消息引用不同的js文件),不确定它们是否相关:

DevTools未能加载SourceMap:无法分析的内容file:///Users/anaroca/Desktop/FCF-Admin/node_modules/@google cloud/firestore/build/src/pool.js.map:JSON输入意外结束

以下是我启动管理应用程序的方式:

var admin = require("firebase-admin");
var serviceAccount = require("./secret.json");
app = admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://project-name.firebaseio.com",
  projectId: 'project-name'
});
感谢您的帮助

编辑:从达拉斯得到答案后,我发现这个stackoverflow是解决我问题的一个非常优雅的方法


Firestore是新的,因此与实时有一些不同

如果希望在electron、react或其他前端框架中实现,则需要使用

如果您希望使用Node.JS、c#等在安全服务器上实现Firestore,则需要使用

这就是我如何使用electron实现的。创建一个firebase.js文件。如果要使用最新语法,请使用babel进行传输

import firebase from 'firebase/app';
import 'firebase/firestore';

const firebaseConfig = {
  apiKey: 'key',
  authDomain: 'domain.firebaseapp.com',
  databaseURL: 'https://domain.firebaseio.com',
  projectId: 'project1234',
  storageBucket: 'myapp.appspot.com',
  messagingSenderId: '123456789',
  appId: 'ID',
  measurementId: 'MID',
};

firebase.initializeApp(firebaseConfig);

export const firestore = firebase.firestore();

export default firebase;
然后在需要访问数据库的任何地方实现

// The firebase.js file you created earlier.
import { firestore } from './firebase';

    const getPost = async (poss) => {
      const snapshot = await firestore.collection('location/of/post').get();
      const myPosts = snapshot.docs.map(collectIdsAndDocs);
      return myPosts;
    };

    const createPost = async (post) => {
      const docRef = await firestore.collection('location/of/post').add(post);
      const doc = await docRef.get();
      return doc;
    };

    createPost({ Title: 'My First Post', Content: 'My content' });
    getPost();

要保护数据库并授予管理员权限,请转到项目设置并分配用户角色。如果您有一台服务器可以清理旧数据或用户,或为其他自治目的服务,则只需使用Admin SDK实现服务帐户。

您是否试图将此添加到前端electron应用程序或node.JS服务器这是一个前端electron应用程序,但它是为管理员提供的,因此需要管理员访问该应用程序数据库读取/写入/更新等。管理员SDK适用于实时数据库。嗨,达拉斯,据我所知,如果我使用客户端SDK,我将没有管理员权限?如果您授予该用户管理员访问权限,则是,他们可以有管理员访问权限。您需要为数据库配置安全规则并分配用户角色。当用户从客户端(electron app)进行身份验证时,google将验证他们从firebase的访问权限。你不必为此担心。只需确保设置了安全规则,以确保安全,并为应用程序用户分配角色。这会不会影响我设置实时管理员访问权限的方式?我是否也需要使用JSSDK并设置管理员权限?这是如果您想要对数据库进行管理员访问的话。如果您想要服务帐户或总管理员访问权限。这需要在服务器上实现,而不是在面向客户端的应用程序上实现。