【发布时间】:2014-05-08 17:39:56
【问题描述】:
我的应用程序正在使用 OAuth2 服务帐户从用户的 Google 云端硬盘复制文件。我正在通过 Java 使用 Google Drive 客户端 api 来获取请求范围为“https://www.googleapis.com/auth/drive”的 Drive 对象。我可以制作 Google Docs 文档的副本,但无法检索 thumbnailLink。我收到 403 禁止错误。我很有信心这是谷歌方面的一个错误。如果我在获得 403 Forbidden 结果的行中的代码中放置一个断点,我可以(当以我要复制的 Google Drive 的用户身份登录时)使用 thumbnailLink 在我的浏览器中获取缩略图。
这是我正在使用的代码的重写 sn-p,其中 sourceFile 是从中复制的 com.google.api.services.drive.model.File,sourceDrive 是 com.google.api.services我上面提到的 .drive.Drive 对象:
File newFile = new File();
newFile.setTitle( sourceFile.getTitle() );
newFile.setDescription( sourceFile.getDescription() );
newFile.setParents( sourceFile.getParents() );
File copiedFile = sourceDrive.files().copy( sourceFile.getId(), newFile ).execute();
String thumbnailLink = copiedFile.getThumbnailLink();
HttpRequest request = sourceDrive.getRequestFactory().buildGetRequest( new GenericUrl( thumbnailLink ) );
HttpResponse response = request.execute();
如上所述,由于返回 403 Forbidden 错误,request.execute() 行会产生异常。如果我在上面代码 sn-p 的最后一行设置断点,我可以获取 thumbnailLink 并将其粘贴到我的浏览器中,该浏览器以从中复制驱动器的用户身份登录,它会成功返回缩略图.
【问题讨论】:
-
-
我的 OAuth2 服务帐户(模拟从中复制文件的用户)得到与未经身份验证的用户在浏览器中得到的相同的错误:403。这是一个错误。您的客户端无权从此服务器获取 URL /kBawseILbP1SYEeCa_O-ir_NSgCWz93jyojJvPPlNGAtMSv93r77_2Q4gzhEZ_pZmJXZ2awVZDB882L5YLMqcpMgTaZj=s220。 (客户端 IP 地址:xx.xx.xx.xx)未经授权的用户这就是我们所知道的。
-
我做了进一步的测试,将 sourceFile 复制到 newFile 对缩略图没有任何影响。即使在复制之前,我也无法从本机 Google Docs 文件中获取缩略图。
-
我的问题听起来很像链接this post。此外,我认为这对我来说一直有效(正如我在帖子中提到的 mtheriault 所提到的那样)就在几周前。如果 Google 有人可以对此问题发表评论,那就太好了,因为它肯定是 Google 的错误。
-
我遇到了同样的错误,只有原生文件也是如此。自 2.5 年前以来,代码一直未受影响,因此这是 Google 对其服务器的某种更改。
标签: google-drive-api google-oauth google-apps-marketplace