【发布时间】:2016-10-06 08:16:21
【问题描述】:
目前没有 node.js Firebase 存储客户端(太糟糕了...),所以我使用 Firebase 控制台中的参数转向 gcloud-node。
我正在尝试:
var firebase = require('firebase');
var gcloud = require('gcloud')({
keyFilename: process.env.FB_JSON_PATH,
projectId: process.env.FB_PROJECT_ID
});
firebase.initializeApp({
serviceAccount: process.env.FB_JSON_PATH,
databaseURL: process.env.FB_DATABASE_URL
});
var fb = firebase.database().ref();
var gcs = gcloud.storage();
var bucket = gcs.bucket(process.env.FB_PROJECT_ID);
bucket.exists(function(err, exists) {
console.log('err', err);
console.log('exists', exists);
});
地点:
FB_JSON_PATH是为使用 Firebase Server SDK 而生成的 JSON 文件的路径FB_DATABASE_URL类似于https://app-a36e5.firebaseio.com/FB_PROJECT_ID是 Google 控制台中 firebase 项目的名称:“app-a36e5”
存储桶的 ID 是 FB_PROJECT_ID(在 Firebase 的控制台中,存储选项卡显示 gs://app-a36e5.appspot.com)
当我运行这段代码时,我得到:
err null
exists false
但没有其他错误。
至少我期待exists true。
一些附加信息:我可以查询数据库(所以我认为 JSON 文件是正确的),并且我设置了如下存储规则:
service firebase.storage {
match /b/app-a36e5.appspot.com/o {
match /{allPaths=**} {
allow read: if true;
allow write: if request.auth != null;
}
}
}
这样存储上的所有内容都是可读的。
任何想法如何让它工作?谢谢。
【问题讨论】:
-
嘿皮埃尔,你成功了吗?对这个有趣的问题给出一个正确的答案会很好。谢谢! (抱歉,我没有意识到这只有 56 分钟 - 让我们等待答案吧 :))
-
也就是说,您的代码中存在第一个问题,您必须使用您的凭据调用
gcloud.storage:gcloud.storage({ projectId: 'firebase-storage-id, keyFilename: 'service-account-json-path' });。 (我这样做了,但我仍然有一个 FORBIDDEN 错误)
标签: node.js google-cloud-storage gcloud-node firebase-storage