2016-07-05 107 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授予讀者權限併爲對象默認權限臨時修復此問題。