Google Drive SDK - Java 示例不工作

2022-01-10 00:00:00 google-drive-api java

我正在尝试使用官方 Java 示例熟悉 Google Drive API.但是,在浪费了几个小时并尝试设置了两次示例之后,我仍然无法按预期使用它.

I'm trying to get familiar with the Google Drive API using the official Java sample. However, after wasting a few hours and attempting to set the sample up two times, I'm still not able to use it as expected.

它不会显示文件的内容,而是在 FileServlet(/svc 路径)中引发 404 错误.更具体地说, service.files().get(fileId).execute(); 似乎返回 null.我已经直接从 Google Drive 以及使用 Google File Picker 尝试了不同的文件、不同的 MIME 类型.

Instead of displaying a file's content it throws a 404 error in the FileServlet (/svc path). More specifically, service.files().get(fileId).execute(); seems to return null. I've tried it with different files, different MIME types, directly from Google Drive as well as using the Google File Picker.

我已按照 https://developers.google.com/drive 中描述的步骤进行操作/examples/java 尽可能接近.

I've followed the steps described over at https://developers.google.com/drive/examples/java as closely as possible.

有人能够让示例运行吗?

Has anyone been able to get the sample running?

这是请求 URL /svc?file_id=0B08R9MrOE-ejZTY2M2I5MjAtYmVjZS00OTkyLWI4ZTEtOTg4OGM3YTIxMWEw 时 FileServlet 的日志输出(第 78 行抛出 404 错误):

edit: Here's the log output of the FileServlet when requesting the URL /svc?file_id=0B08R9MrOE-ejZTY2M2I5MjAtYmVjZS00OTkyLWI4ZTEtOTg4OGM3YTIxMWEw (the 404 error is thrown at line 78):

2012-04-26 08:21:36.077
com.google.api.client.http.HttpRequest execute: -------------- REQUEST  --------------
GET https://www.googleapis.com/drive/v1/files/0B08R9MrOE-ejZTY2M2I5MjAtYmVjZS00OTkyLWI4ZTEtOTg4OGM3YTIxMWEw
Accept-Encoding: gzip
User-Agent: Google-HTTP-Java-Client/1.8.3-beta (gzip)

D 2012-04-26 08:21:36.263
com.google.api.client.http.HttpResponse <init>: -------------- RESPONSE --------------
403 OK
content-type: application/json; charset=UTF-8
content-encoding: gzip
date: Thu
date: 26 Apr 2012 06:21:36 GMT
expires: Thu
expires: 26 Apr 2012 06:21:36 GMT
cache-control: private
cache-control: max-age=0
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
content-length: 188
server: GSE
x-google-cache-control: remote-fetch
via: HTTP/1.1 GWA

D 2012-04-26 08:21:36.265
com.google.api.client.http.HttpResponse getContent: Response size: 188 bytes
D 2012-04-26 08:21:36.271
com.google.api.client.http.HttpResponse getContent: {
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "dailyLimitExceededUnreg",
    "message": "Daily Limit Exceeded. Please sign up",
    "extendedHelp": "https://code.google.com/apis/console"
   }
  ],
  "code": 403,
  "message": "Daily Limit Exceeded. Please sign up"
 }
}

这听起来很像我不认识你",所以我再次查看了我的客户端 ID 和客户端密码:我注意到有两个客户端 ID 和客户端密码显示在API 控制台,一个Web 应用程序的客户端 ID"和另一个Drive SDK 的客户端 ID".我以前用过那个用于 Web 应用程序,所以我尝试切换到用于 Drive SDK 的那个.不幸的是,这并没有改变任何东西.同样的错误...:/

This sounds a lot like "I don't know you" to me, so I have taken another look at my Client ID and Client Secret: I've noticed that there are two Client IDs and Client Secrets being displayed in the API Console, one "Client ID for web applications" and another "Client ID for Drive SDK". I've used the one for web applications previously, so I tried to switch to the one for the Drive SDK. Unfortunately, this doesn't change anything. Same error... :/

推荐答案

我最终设法让它工作.我不确定之前的问题是什么,但这里有一些提示给那些面临类似问题的人:

I eventually managed to get it working. I'm not sure what was the problem before, but here are some tips for those who are facing similar problems:

  • Web 应用程序的客户端 ID"和Drive SDK 的客户端 ID"让我感到困惑.不幸的是,文档没有告诉您在哪个地方使用哪一个,但您似乎只需要Web 应用程序的客户端 ID".

  • The "Client ID for web applications" and the "Client ID for Drive SDK" confused me. Unfortunately the documentation doesn't tell you which one to use at which place, but it seems like you only need the "Client ID for web applications".

如果您更新 Chrome 扩展程序或 API 控制台,可能需要一些时间才能让云端硬盘识别这些更改.例如,在 API 控制台中更改 OAuth 客户端 ID 可能需要一些时间才能生效,因为每个人都在缓存.如果您正在测试您的应用程序,删除缓存和 cookie 有助于加快该过程.

If you update your Chrome extension or the API console it could take some time until Drive recognizes those changes. For example, changing the OAuth Client ID in the API console could take some time until it takes effect, since everybody's caching. If you are testing your application, deleting cache and cookies helps speed up the process.

祝你申请顺利,感谢所有帮助过我的人!

Good luck with your applications, and thanks to everybody who helped me!

相关文章