如何在 google drive sdk 中下载 google 个文件?

How to download google files in google drive sdk?

这样我就成功下载了一张图片:

GTLServiceDrive *drive = ...;
GTLDriveFile *file = ...;
NSString *url = [NSString stringWithFormat:@"https://www.googleapis.com/drive/v3/files/%@?alt=media",file.identifier];
GTMSessionFetcher *fetcher = [drive.fetcherService fetcherWithURLString:url];
[fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) {
  if (error == nil) {
    NSLog(@"Retrieved file content");
    // Do something with data
  } else {
    NSLog(@"An error occurred: %@", error);
  }
}];

google drive sdk 的文档告诉我下载一个 pdf 或 google 文档应该使用另一个 url:

NSString *url = [NSString stringWithFormat:@"https://www.googleapis.com/drive/v3/files/%@/export?alt=media&mimeType=application/pdf",file.identifier];

但是我失败了,错误是这样的:

{
 "error": {
  "errors": [
    {
     "domain": "global",
     "reason": "badRequest",
    "message": "Bad Request"
   }
  ],
  "code": 400,
  "message": "Bad Request"
 }
}

在下载文件时,请确保您的应用程序必须获得允许读取文件内容的范围的授权。例如,使用 drive.readonly.metadata 范围的应用将无权下载文件内容。具有编辑权限的用户可以通过将 viewersCanCopyContent 字段设置为 true 来限制 read-only 用户的下载。

还有另一种方法可以使用部分下载来下载文件。它涉及仅下载文件的指定部分。您可以使用范围为 header.

的字节范围来指定要下载的文件部分

SO question 正在使用部分下载。我觉得可以帮到你。

此代码演示了如何下载 PDF 格式的 Google 文档。

String fileId = "1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo";
OutputStream outputStream = new ByteArrayOutputStream();
driveService.files().export(fileId, "application/pdf")
        .executeMediaAndDownloadTo(outputStream);