簡體   English   中英

我應該使用哪些憑據來允許用戶直接上傳到GCS?

[英]What credentials should I use to allow the users to upload directly to GCS?

我正在GAE(python)中創建一個應用程序,允許用戶(必須使用Google帳戶登錄)直接將文件上傳到Google雲端存儲。 上傳將異步發生(一個按鈕將執行一些javascript代碼以發送帶有文件的XHR PUT請求)。

我決定使用JSON API ,我正在嘗試進行分段上傳。 根據文檔,我需要包含帶有令牌的Authorization標頭。 我想知道,因為我不需要訪問用戶帳戶中的任何內容(如日歷或那種東西),實現這一目標的最佳方法是什么?

是否可以從應用程序默認憑據創建臨時訪問令牌,並將其發送到html文件中的用戶,然后從js函數使用它? 如果沒有,我該怎么辦?

您需要讓用戶授予您谷歌雲存儲寫入范圍(我強烈建議任何谷歌雲存儲用戶不授予任何隨機應用程序)。 您還需要授予最終用戶對您的存儲桶的寫入權限(這也意味着他們可以刪除存儲桶中的所有內容)。 除非您事先了解所有最終用戶,否則這意味着您需要將存儲桶公開寫入..我懷疑您是否想要這樣做。

我強烈建議您使用委托訪問您的服務帳戶,但不幸的是,JSON api目前不支持任何形式的身份驗證委派。 但是,XML API確實支持簽名URL。

https://cloud.google.com/storage/docs/access-control/signed-urls

您只需將它用於客戶端上傳,其他所有內容都可以使用JSON api。

有三種選擇:

  1. 只需簽署一個簡單的PUT請求即可

https://cloud.google.com/storage/docs/xml-api/put-object-upload#query_string_parameters

  1. 使用表單POST並簽署策略文檔

https://cloud.google.com/storage/docs/xml-api/post-object#policydocument

  1. 啟動可恢復的上載服務器端並將上載URL傳遞回客戶端。 如果能夠恢復上傳很重要(例如大型上傳),我只推薦這個選項。

https://cloud.google.com/storage/docs/access-control/signed-urls#signing-resumable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM