0

從Node,我試圖使用Google Cloud Vision API分析存儲在Google Storage中的圖像。我已經成功地對base64進行了編碼並上傳了一張圖片,但希望通過針對Google Storage中的文件執行來加快此過程。我的要求是這樣的,將Google Cloud Vision API授權給Google Storage圖片

{「requests」:[{「image」:{「source」:{「gcsImageUri」:「gs://mybucket/10001.jpg」}},「features」:[{{ 「類型」: 「LABEL_DETECTION」, 「的maxResults」:10}]}]}

但我收到此錯誤從我的電話,

{ 「迴應」:[{ 「錯誤」:{ 「代碼」 :7,「message」:「image-annotator :: User缺少權限:ACCESS_DENIED:匿名調用者沒有storage.objects.get訪問對象mybucket/10001.jpg。」 }}]}

我沒有使用任何谷歌SDK或node_modules這個請求,只是一個瀏覽器API密鑰和HTTP模塊。雲存儲中是否有一些權限需要設置,以允許Vision API訪問存儲桶中的對象?如果是這樣的話,我是Google雲端平臺的新手,但擁有豐富的AWS IAM角色經驗。

感謝, VIPER

回答

2

你可能有GCS形象是不公開可讀調用雲API願景匿名。您可能會提供API密鑰,但API密鑰不會驗證請求。您可以通過以下兩種方式之一來解決這個問題:

  1. 做驗證的請求到雲願景API,驗證爲已被授權讀取GCS文件中的特定用戶或

  2. 設置GCS文件允許匿名讀取訪問。您可以通過檢查對象的「公開可讀」複選框或使用如下命令行客戶端來從控制檯執行此操作:gsutil acl ch -g AllUsers:R gs://mybucket/10001.jpg

+0

太好了。因此,取得進展,使用google-auth-library-nodejs我能夠得到一個授權標頭,其中包含一個不記名令牌,現在當我打電話時帶有添加的令牌,我收到這個錯誤消息:「Project has未激活vision.googleapis.com API,請啓用項目爲google.com:cloudsdktool的API(#32555940559)。「 任何想法如何'激活'到我正在使用的服務帳戶? 謝謝! – Viper

+0

如果您的項目未啓用Vision API,請點擊以下鏈接:https://console.developers.google.com/apis/api/vision.googleapis.com/overview,然後確保您的項目已在右上角,然後點擊「啓用」。 但是,我不認爲這是你的問題:「google.com:cloudsdktool」不是你的項目。這是一個演示項目。確保你正在使用自己的項目的客戶端ID進行身份驗證,而不是演示項目。 –

+1

看起來您正在使用'gcloud auth login'來獲取您的身份驗證令牌。嘗試下載[服務帳戶密鑰](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount),然後使用'gcloud auth activate-service-account'或[設置](https://開發人員。谷歌。com/identity/protocols/application-default-credentials#howtheywork)'GOOGLE_APPLICATION_CREDENTIALS'環境變量作爲服務帳戶json文件的路徑。 – jerjou

0

其實有兩個ways.First方式是 1)打開你的谷歌的雲願景的鬥會有一個選項叫做「公開分享」,並標記它是對於該文件,你想測試。然後運行代碼,你會得到所需的結果