2017-09-05 108 views
0

要根據this下載從谷歌驅動器中的文件,我們必須使用Android的訪問令牌谷歌雲端硬盤API下載文件

GET https://www.googleapis.com/drive/v3/files/0B9jNhSvVjoIVM3dKcGRKRmVIOVU?alt=media 授權:承載「ACCESS_TOKEN」

我想知道是什麼這個訪問令牌是什麼? 是這個android客戶端ID?當在授權頭中傳遞客戶端ID時,它會給401未授權的錯誤。 如果我使用如下代碼,文件下載成功,但是當我嘗試打開它,它說無效的文件

OutputStream outputStream = new ByteArrayOutputStream(); 
driveService.files().get(fileId) 
    .executeMediaAndDownloadTo(outputStream); 
+0

你不必模擬客戶端,而可以添加它與gradle ... –

+0

@MartinZeitler該怎麼辦? 我們是否需要添加一些清單文件..? –

+0

您是否將依賴項添加到.gradle文件中? –

回答

1

您可以添加Drive API Client Library for Java到模塊的build.gradle ...而不是創建一個全新的Google Drive REST API的 客戶端。 clientId應該來自google-services.json文件(並可能與REST憑據不同,請檢查控制檯)。

dependencies {

//Google HTTP Client

compile 'com.google.http-client:google-http-client-android:1.22.0' 
compile 'com.google.http-client:google-http-client-jackson2:1.22.0' 

//Google API Client

compile 'com.google.api-client:google-api-client-android:1.22.0' 
compile 'com.google.api-client:google-api-client-jackson2:1.22.0' 

//Google OAuth Client

compile 'com.google.oauth-client:google-oauth-client:1.22.0' 

//Google Drive API

compile 'com.google.apis:google-api-services-drive:v3-rev65-1.22.0' 

}

然後運行./gradlew clean下載庫。

+0

訪問令牌,客戶端ID? –

+0

@NaveedAli Google OAuth客戶端存在依賴關係...因此您可能不需要擔心這一點。爲Android創建一個REST客戶端是完全無意義的,而有一個現成的Java客戶端爲Android ...只是使用它,並嘗試爲Android創建Web應用程序。 –

+0

@ Naveed Ali訪問令牌不是客戶端ID,請查看我的答案[here](https://stackoverflow.com/a/46065286/6143482)。 – noogui

0

閱讀this文章之後,我才知道什麼是訪問令牌正是 Mobile Api Security

在OAuth2以移動API安全

  1. 用戶打開你的移動應用程序,並提示輸入自己的用戶名或電子郵件和密碼。

  2. 您可以使用用戶的用戶名或電子郵件和密碼數據(OVER SSL!)從移動應用向您的API服務發送POST請求。

  3. 您驗證用戶憑證,併爲在某段時間後過期的用戶創建一個訪問令牌。

  4. 您將此訪問令牌存儲在移動設備上,將其視爲可讓您訪問API服務的API密鑰。

  5. 一旦訪問令牌失效並且不再有效,您將重新提示用戶輸入他們的用戶名或電子郵件和passwordU。

+0

你得到一個訪問令牌,然後需要獲取一個刷新令牌......當你完全重新發明輪子時,Android上完全不需要這個輪子。不會倒票,而這種做法毫無意義。爲什麼你浪費你的時間寫一個客戶,這不起作用 - 當有客戶,它的工作和正在積極維護?只要接受上面的答案,並儘快開始工作......你甚至嘗試過嗎? –

+0

兄弟我離開這個任務在等待,因爲我被轉移到其他項目.. 我不清楚有關訪問令牌這就是爲什麼我問這個問題,但現在在上述文章的幫助下,現在很清楚.. 我upvoted你回答..問題發生,甚至我試過你的線..這就是爲什麼我不能接受它...現在我沒有足夠的時間回到這個任務..因此,我不能接受你的答案對不起:) –

+0

哥哥我離開這個任務,因爲我被轉移到另一個項目.. 我不清楚訪問令牌這就是爲什麼我問這個問題,但現在在提到的文章的幫助下,現在很清楚.. 我upvoted你回答..問題發生,即使我試過你的臺詞..這就是爲什麼我不能接受它...現在我沒有足夠的時間回來t o這項任務.. 因此,我不能接受你的答案對不起:) –

相關問題