2016-07-05 115 views
1

我在iOS上使用Firebase,并且希望让用户将照片上传到Firebase存储。之后,我想使用Google Cloud Vision API分析照片。让Google Cloud Vision API访问Firebase存储

上传工作正常。

要分析的照片,我指定它使用

image = { 
    source = { 
     gcsImageUri = "gs://app.name.from.firebase.console/path.to.photo"; 
    }; 
}; 

的问题是,我得到以下错误

error = { 
    code = 7; 
    message = "image-annotator::User lacks permission.: Calling GetObjectMetadata with file \"/bigstore/gs://app.name.from.firebase.console/path.to.photo\": cloud.bigstore.ResponseCode.ErrorCode::ACCESS_DENIED: ACCESS_DENIED: gaiaUser/0 does not have OBJECTS_GET access to object gs://app.name.from.firebase.console/path.to.photo."; 
}; 

你有什么建议w.r.t.我需要设置什么权限?

谢谢!

回答

1

我认为这是因为您为使用Cloud Vision API和Firebase存储(仅Google云存储存储桶)而创建的service account(GCS文档)可能不会涵盖使用这两者。你是如何创建你的服务账户的?根据these instructions(云视觉文档)?

您可以通过创建具有读取存储桶权限的服务帐户(确保IAM角色包含对象GET)来解决此问题。如果尚未存在,则可能还需要将此服务帐户添加到默认存储桶和对象ACL(如果使用存储桶的正确IAM角色创建它们,通常会添加此服务帐户,但这是明智的选择)。

FWIW,I have a project这样做,所以我很惊讶默认的服务帐户不适用于这两件事情。

+0

嗨迈克,谢谢你的回答。我将检查服务帐户文档和您发布的说明。我查看了您的Flaming规格,并且我知道它会从Firebase照片创建一个新文件并将该文件传递给Cloud Vision。我想要一个更简单的解决方案,只需引用Firebase图像。 – silviu

+0

我在制作Cloud Vision API教程时创建了一个服务帐户。我向该帐户授予了对Firebase存储分区的读取权限。使用Google API Explorer时,我注意到如果我运行经过验证的查询(使用我自己的帐户),那么它就可以工作。但是,我还没有弄清楚如何使用服务帐户来验证查询。 – silviu

0

我设法通过向读卡器上的allUsers授予读者权限并为对象默认权限临时修复此问题。

相关问题