在App引擎中的Google Storage Object上创建signedUrl时拒绝访问

时间:2017-05-01 17:03:14

标签: node.js google-app-engine google-cloud-storage firebase-storage

确切文字:"拒绝访问。调用者没有对(url)"

上的对象进行storage.objects.get访问

我目前在谷歌服务上有2个项目。一个是Android / iOS应用程序的资源,它将图像上传到谷歌云存储(更多的是firebase存储)。另一个是node.js服务器,它检测图像上载的时间并将带有signedUrl的电子邮件发送到该图像。

node.js服务器具有以下名为的Google存储设置和功能:

var storage = require("@google-cloud/storage")({
   keyFilename: "google_secret.json",
   projectId: 'xxxxxxxxxxx' 
});

function getImageFromGcloud(x, y, time, date_string) {
    var bucket = storage.bucket('bucket-name');
    var storage_ref = 'Incomplete_Scans/' + date_string + "/" x + "_" + y + "_" + time + ".jpeg";

    bucket.file(storage_ref).getSignedUrl({
         action: 'read',
         expires: '03-17-2025'
    }, function(err, url) {
         if (err){
             console.error(err);
             return;
         }
         console.log("Sent email");
    });
}

getSignedUrl提供的链接用于工作,点击它时会打开一个带有图像的新选项卡。然而,截至最近,它刚刚停止。也许它与权限有关,但我所做的一切都在起作用。有任何想法吗?

先谢谢你。

1 个答案:

答案 0 :(得分:1)

如果您获得403(权限被拒绝)而不是401(无效身份验证),则签名请求的服务帐户可能由于某种原因失去了对对象的访问权限。添加对该服务帐户的读取权限。