2016-11-21 64 views
1

從谷歌驅動API我下面的說明google drive upload file api 這是我的請求主體仙丹上傳文件到谷歌驅動

multipart_request_body = 
--1234567 
Content-Type: application/json 


{ name: "text.csv", mimeType: "text/csv"} 
--1234567 
Content-Length: 18 
Content-Type: text/comma-separated-values 
Content-Transfer-Encoding: binary 


id,promo\n1,asdadas 
--1234567-- 

和頭

headers = [{"Content-Type", "multipart/related; boundary=1234567"}, 
      {"Content-Length", byte_size(multipart_request_body)}, 
      {"Authorization","Bearer #{access_token}"}]` 

和URL

api_url = "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart" 

我我正在使用HTTPoison發出帖子請求:

response = HTTPoison.post!(api_url,multipart_request_body, headers) 

和我越來越status_code: 200和返回的元數據是%{"id" => "0B6Xd6TBQkqUPM0s4TEY5SGRXcU0", "kind" => "drive#file", "mimeType" => "text/csv", "name" => "text.csv"}

但是,當我檢查我的谷歌驅動器,文件從未存在,我無法使用返回id獲取文件。

我一直在這裏stucked好幾個小時,誰能幫助這裏有什麼問題?

+0

你確定是的access_token你正在檢查的谷歌雲端硬盤帳戶的同一帳戶的? – Dogbert

+0

嘗試做一個files.list上傳後。該API說它已上傳。它給你一個上傳文件的文件ID。任何機會,這是您正在使用的服務帳戶和您上傳到服務帳戶驅動器帳戶。 – DaImTo

+0

@DaImTo是的,我使用服務帳戶上傳文件,我如何查看服務帳戶驅動器帳戶? – PYe

回答

0

服務帳戶是不是你。將服務帳戶視爲虛擬用戶。它有自己的驅動器帳戶,谷歌日曆帳戶,可能還有更多。

當您上傳到您所上傳到服務的服務帳戶,帳戶谷歌驅動器帳戶。雖然例如Google驅動器網站無法以圖形方式訪問服務帳戶驅動器帳戶。

現在,你有幾種選擇。

  1. 與服務帳戶共享您的谷歌驅動器帳戶上的文件夾,並上傳到該文件夾​​通過設置您上傳的文件的父ID爲您的帳戶的文件夾的ID。與此相關的問題包括權限,服務帳戶將擁有該文件,並且必須對文件進行上載權限,以便爲您的個人提供Google帳戶訪問權限。
  2. 具有服務帳戶創建其帳戶的目錄和您的個人帳戶谷歌共享。與此相關的問題也是有關該文件的權限。僅僅因爲您的個人帳戶可以在添加文件時訪問目錄,它們必須進行修補才能訪問,這不是自動完成的。因此可以訪問目錄但不能訪問已上載到目錄中的文件。
  3. 爲服務帳戶創建您自己的圖形界面。使用file.list返回當前在驅動器帳戶上的文件列表。

我的服務帳戶教程Google Developer console service account深入瞭解服務帳戶的工作方式。