如何使用 Node.js 获取和设置数据到 Firebase?

新手上路,请多包涵

我正在学习 Firebase 和 Node.js。我想从 Twitter 获取我的推文并将它们发送到 Firebase。我可以从 Twitter 检索我的推文,但无法将这些推文发送到 Firebase。

如何将这些从 Twitter 检索到的推文发送到 Firebase?

我试过以下代码:

 var firebase = require('firebase');

// Initialize
var app = firebase.initializeApp({
    ServiceAccount: {
       projectId: "******",
       clientEmail: "****@gmail.com",
       privateKey: "-----BEGIN PRIVATE KEY-----\nkey\n-----END PRIVATE KEY-----\n"
    },
   databaseURL: "****.firebaseio.com"
});

// Set Sample Data
firebase.database().ref('/').set({
    username: "test",
    email: "test@mail.com"
});

我在控制台上收到以下错误:

  Debugger listening on port 5858
 crypto.js:279
  var ret = this._handle.sign(toBuf(key), null, passphrase);
                         ^

Error: error:0906D064:PEM routines:PEM_read_bio:bad base64 decode
    at Error (native)
    at Sign.sign (crypto.js:279:26)
    at Object.sign (C:\Users\admin\Desktop\myProject\myProject\node_modules\firebase\node_modules\jsonwebtoken\node_modules\jws\node_modules\jwa\index.js:54:45)
    at Object.jwsSign [as sign] (C:\Users\admin\Desktop\myProject\myProject\node_modules\firebase\node_modules\jsonwebtoken\node_modules\jws\lib\sign-stream.js:23:24)
    at Object.JWT.sign (C:\Users\admin\Desktop\myProject\myProject\node_modules\firebase\node_modules\jsonwebtoken\index.js:137:16)
    at authJwt (C:\Users\admin\Desktop\myProject\myProject\node_modules\firebase\auth-node\auth.js:83:16)
    at fetchAccessToken (C:\Users\admin\Desktop\myProject\myProject\node_modules\firebase\auth-node\auth.js:96:17)
    at app_.INTERNAL.getToken (C:\Users\admin\Desktop\myProject\myProject\node_modules\firebase\auth-node\auth.js:196:14)
    at Zb.getToken (C:\Users\admin\Desktop\myProject\myProject\node_modules\firebase\database-node.js:28:3496)
    at yh (C:\Users\admin\Desktop\myProject\myProject\node_modules\firebase\database-node.js:195:334)
 Press any key to continue...

另外,这是我的 Firebase 规则,我将这些规则用于测试目的:

 {
   "rules":
   {
      ".read": true,
      ".write": true
   }
}

原文由 Firat Eski 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 544
2 个回答

我解决了我的问题。我刚刚从 Firebase 控制台下载了 serviceAccount.json 文件并将其插入到我的项目中。 “服务帐户”文件包含我需要的一切。

 var firebase = require('firebase');

firebase.initializeApp({
    databaseURL: 'https://*****.firebaseio.com',
    credential: 'myapp-13ad200fc320.json', // This is the serviceAccount.json file
});

然后下面的代码运行良好。

 firebase.database().ref('/').set({
    username: "test",
    email: "test@mail.com"
});

原文由 Firat Eski 发布,翻译遵循 CC BY-SA 4.0 许可协议

node 应用程序中服务帐户的这种特定语法/库正在被弃用。在服务器(即不是消费者应用程序,如 IoT 或桌面)上访问 firebase 的新方法是 firebase admin sdk

你的初始化代码现在应该是:

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

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

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
});

您仍然可以手动输入您的凭据,但它们现在已分配给不同的属性:

 admin.initializeApp({
  credential: admin.credential.cert({
    projectId: "<PROJECT_ID>",
    clientEmail: "foo@<PROJECT_ID>.iam.gserviceaccount.com",
    privateKey: "-----BEGIN PRIVATE KEY-----\n<KEY>\n-----END PRIVATE KEY-----\n"
  }),
  databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
});

原文由 Brandon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题