如何使Firebase Cloud功能具有对存储的完全读/写管理权限?

时间:2019-03-06 18:39:32

标签: node.js firebase google-cloud-storage google-cloud-functions firebase-admin

我创建了一些功能,这些功能可以使用Firebase SDK从具有云功能的Firebase存储中上传和下载文件,并且它们可以正常工作。 我希望这些功能以admin身份执行,以便它们不需要遵守存储规则。

我已将firebase SDK替换为admin SDK,但是我发现firebase.storage()。ref引用不再起作用,通过阅读一些文档,我意识到我现在需要使用google cloud服务系统。

所以我的问题是,是否有一种方法可以让云功能具有整个Firebase项目的管理员权限,而不必切换到Google云功能;如果没有,是否有解决办法,以便我可以授权我的云功能对整个存储具有完全的读取/写入功能?我很困惑!

这是我的代码的片段:

const firebase = require('firebase-admin');

const functions = require('firebase-functions');

require("firebase-admin")
require("firebase")
require("firebase/storage");

var serviceAccount = require("serviceAccount.json");

var config = {
    [...]
    credential: firebase.credential.cert(serviceAccount)
  };
  firebase.initializeApp(config);

  var storage = firebase.storage();
  var storageRef = storage.ref(); //This returns .ref() is not a function

1 个答案:

答案 0 :(得分:0)

Firebase客户端库不适用于后端服务器环境。 Firebase Admin SDK适用于后端,但是访问Cloud Storage的API与客户端SDK不同。 Admin SDK仅wraps个Cloud Storage服务器SDK。因此,对于节点环境,实际上您将只使用Cloud Storage Node.js client

致电时:

const admin = require('firebase-admin')
const storage = admin.storage()

您正在从节点SDK中获得Storage对象。它没有ref()方法。您将需要获取一个Bucket对象,并使用该对象:

const bucket = storage.bucket()

从这里开始,您应该继续使用我链接到的API文档。