我的应用正在使用OAuth2服务帐户从用户的Google Drive中复制文件。我使用Java通过Google Drive客户端api获取具有所请求范围的Drive对象,该范围为"https://www.googleapis.com/auth/drive"。我能够复制Google Docs文档,但无法检索thumbnailLink。我收到了403 Forbidden错误。我非常有信心这是Google方面的一个bug。如果我在获取403 Forbidden结果的代码行上设置断点,(当作为我要复制的用户登录时)我可以使用thumbnailLink在浏览器中获取缩略图。
以下是我正在使用的代码片段的重写版本,其中sourceFile是要从中复制的com.google.api.services.drive.model.File,sourceDrive是我上面提到的com.google.api.services.drive.Drive对象:
以下是我正在使用的代码片段的重写版本,其中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();
如上所述,request.execute()这一行代码由于返回了403禁止错误而导致出现异常。如果我在上面代码片段的最后一行设置断点,我可以获取thumbnailLink并将其粘贴到以正在复制其Drive的用户登录的浏览器中,成功地返回缩略图。