Android的访问令牌谷歌云端硬盘API下载文件

问题描述:

要根据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文件中? –

您可以添加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://*.com/a/46065286/6143482)。 – noogui

阅读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这项任务.. 因此,我不能接受你的答案对不起:) –