使用 node.js 网络服务器写入 Firebase 数据库 - "FIREBASE WARNING: set at ... failed: permission_denied"

Writing to Firebase database with node.js web server - "FIREBASE WARNING: set at ... failed: permission_denied"

我有一个 node.js 网络服务器,我试图通过它写入 Firebase。但是,每当它运行时,我都会收到以下错误消息:

FIREBASE WARNING: set at /mydb failed: permission_denied 

以下是我设置应用程序的方式(相关详细信息):

var firebase = require('firebase');

var config = {
  apiKey: "8oc57xxx",
  authDomain: "example-04.firebaseapp.com",
  databaseURL: "https://example-ex04.firebaseio.com",
  projectId: "example-ex04",
  storageBucket: "example-ex04.appspot.com",
  messagingSenderId: "5022"
};

firebase.initializeApp(config);

function writeData(details) {
  firebase.database().ref('mydb/'). push({
    title: details.title,
    description: details.description,
    tags: details.tags
  }).then(function() {
    console.log('Upload succeeded');
  }).catch(function(error) {
    console.log('Upload failed');
  });;
}

调用函数:

//what details looks like:
//{ title: 'Details',
  //description: 'Really fast, and awesome.',
  //tags: 'tag-1' 
//}

exports.postDetails = (req, res, next) => {
  writeData(req.body);

  const errors = req.validationErrors();

  if (errors) {
    req.flash('errors', errors);
    return res.redirect('/example');
  } 

  req.flash('success', { msg: 'Success!' });    
  res.redirect('/example');    
};

我需要做什么才能让 Firebase 接受我的 post?我一直在阅读有关此的一些文档:

https://firebase.google.com/docs/reference/js/firebase.database.Reference#set

你的firebase sdk设置完成了吗? 您需要下载一个 JSON 文件,并将其放入您的节点服务器。 然后使用此代码初始化 firebase。

var admin = require("firebase-admin");

var serviceAccount = require("path/to/serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  apiKey: "8oc57xxx",
  authDomain: "example-04.firebaseapp.com",
  databaseURL: "https://example-ex04.firebaseio.com",
  projectId: "example-ex04",
  storageBucket: "example-ex04.appspot.com",
  messagingSenderId: "5022"
});

function writeData(details) {
  admin.database().ref('mydb/').push({
    title: details.title,
    description: details.description,
    tags: details.tags
  }).then(function() {
    console.log('Upload succeeded');
  }).catch(function(error) {
    console.log('Upload failed');
  });;
}

调用函数:

//what details looks like:
//{ title: 'Details',
  //description: 'Really fast, and awesome.',
  //tags: 'tag-1' 
//}

exports.postDetails = (req, res, next) => {
  writeData(req.body);

  const errors = req.validationErrors();

  if (errors) {
    req.flash('errors', errors);
    return res.redirect('/example');
  } 

  req.flash('success', { msg: 'Success!' });    
  res.redirect('/example');    
};

您可以在这个 google 网站上查看

Add the Firebase Admin SDK to your Server