如何生成Firebase下载令牌

时间:2019-05-24 11:00:56

标签: firebase firebase-storage

我们知道如何使用客户端SDK轻松完成此操作,如何在管理SDK中生成firebase download token

我了解客户端SDK充当存储SDK的包装器,因此它添加了此功能,但是,为什么不给admin SDK相同的选项。我只想知道如何使用当前的SDK自己生成该令牌,因为我需要这些URL具有与客户端内部生成的URL相同的格式,并且使用getSignedURL时,该格式会有所不同,并且不遵守Firebase存储规则,也不是永久性的,因为它会在设定的时间后过期。

2 个答案:

答案 0 :(得分:1)

听起来您好像误会了一点。客户端上的Storage SDK创建的下载URL实际上并不“遵守安全规则”。拥有该下载URL的任何人都可以读取该对象。这与服务器SDK生成的签名URL没什么不同。

这两种URL在功能上是等效的。明显的例外是,签名的URL有一个到期时间,但是您可以在将来很长一段时间内随意设置该到期时间,这没有什么区别。

简而言之-服务器SDK无法生成客户端下载URL,客户端SDK无法生成签名URL,但这没关系,因为它们具有相同的用途。

答案 1 :(得分:0)

在使用getDownloadURL的同时,为了从client SDK获得与admin SDK相同的URL,您要做的就是更新对象的metadata使用名为firebaseStorageDownloadTokens的密钥。与其他人所说的相反,您不需要signedUrl

  

$ uuid = someUuidMethod();

     

$ object-> update(['元数据'=> ['firebaseStorageDownloadTokens'=> $ uuid]]);

  1. 运行上述操作时,会出现如下错误:
  

serviceaccount没有storage.objects.update访问权限

在这种情况下,您需要转到IAM中的GCP Console部分,选择服务帐户(错误中提到的帐户)Edit roles,然后添加另一个角色{ {1}}。

  1. 再次运行Storage > Owner命令,作业完成。现在,您可以生成自己的令牌。当您依靠云服务来处理存储文件时就需要它。

希望它会有所帮助:)