我们知道如何使用客户端SDK轻松完成此操作,如何在管理SDK中生成firebase download token。
我了解客户端SDK充当存储SDK的包装器,因此它添加了此功能,但是,为什么不给admin SDK相同的选项。我只想知道如何使用当前的SDK自己生成该令牌,因为我需要这些URL具有与客户端内部生成的URL相同的格式,并且使用getSignedURL
时,该格式会有所不同,并且不遵守Firebase存储规则,也不是永久性的,因为它会在设定的时间后过期。
答案 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]]);
serviceaccount没有storage.objects.update访问权限
在这种情况下,您需要转到IAM
中的GCP Console
部分,选择服务帐户(错误中提到的帐户)Edit roles
,然后添加另一个角色{ {1}}。
Storage > Owner
命令,作业完成。现在,您可以生成自己的令牌。当您依靠云服务来处理存储文件时就需要它。希望它会有所帮助:)