2016-07-05 11 views
1

Ich verwende Firebase für iOS und möchte, dass Benutzer ein Foto auf Firebase Storage hochladen. Danach möchte ich das Foto mithilfe von Google Cloud Vision-APIs analysieren.Google Cloud Vision API-Zugriff auf Firebase-Speicher gewähren

Hochladen funktioniert einwandfrei.

das Foto zu analysieren, ich bin es

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

Das Problem mit Angabe ist, dass ich die folgende Fehlermeldung erhalten

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."; 
}; 

Haben Sie Vorschläge w.r.t. Welche Berechtigungen muss ich festlegen?

Danke!

Antwort

1

Ich nehme an, dies liegt daran, dass die service account (GCS-Dokumente), die Sie für die Verwendung der Cloud Vision-API und Firebase Storage (nur ein Google Cloud Storage-Bucket) zusammen erstellt haben, möglicherweise nicht beide verwenden. Wie haben Sie Ihr Dienstkonto erstellt? Nach these instructions (Cloud Vision Dokumente)?

Sie können dies beheben, indem Sie ein Dienstkonto mit Berechtigungen zum Lesen Ihres Buckets erstellen (stellen Sie sicher, dass die IAM-Rolle das Objekt GET enthält). Möglicherweise müssen Sie dieses Dienstkonto auch Ihren Standard-Bucket- und -Objekt-ACLs hinzufügen, falls dies nicht bereits geschehen ist (sie werden normalerweise hinzugefügt, wenn sie mit der richtigen IAM-Rolle für den Bucket erstellt werden, aber es ist ratsam, dies zu überprüfen).

FWIW, I have a project das genau dies tut, so bin ich überrascht, dass ein Standard-Dienst-Konto für beide dieser Dinge nicht funktionieren würde.

+0

Hallo Mike, danke für die Antwort. Ich überprüfe die Service-Account-Dokumente und die von Ihnen geposteten Anweisungen. Ich habe Ihre Flaming Specs überprüft und ich verstehe, dass sie eine neue Datei aus einem Firebase-Foto erstellt und diese an Cloud Vision weiterleitet. Ich wollte eine einfachere Lösung, die nur auf das Firebase-Image verweist. – silviu

+0

Ich hatte während des Cloud Vision-API-Lernprogramms ein Dienstkonto erstellt. Ich habe diesem Konto Lesezugriff auf den Firebase-Bucket gegeben. Beim Spielen mit dem Google API Explorer habe ich festgestellt, dass es funktioniert, wenn ich authentifizierte Abfragen (mit meinem eigenen Konto) ausführe. Aber ich muss noch herausfinden, wie man Abfragen mit dem Dienstkonto authentifiziert. – silviu

0

Ich habe es geschafft, das Problem vorübergehend zu beheben, indem ich Reader die Berechtigung für alle Benutzer im Bucket und auch für die Objektstandardberechtigungen gab.