如何使用目标c从谷歌驱动器下载文件?

时间:2016-02-22 05:30:40

标签: ios objective-c google-drive-api

我正在使用谷歌驱动器下载文件。但是我使用谷歌SDK面临很多问题。在developer.google.com中,有一些示例可供使用。

 GTLServiceDrive *drive = ...;

    GTLDriveFile *file = ...;

    GTMHTTPFetcher *fetcher = [drive.fetcherService fetcherWithURLString:file.downloadUrl];`

    `[fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) {
      if (error == nil) {
        NSLog(@"Retrieved file content");
        // Do something with data
      } else {
        NSLog(@"An error occurred: %@", error);    
      }
    }];

我已从developer.google.com网站下载了新的sdks,但在上面的示例中给出了GTMHTTPFetcher *fetcher = [drive.fetcherService fetcherWithURLString:file.downloadUrl];。但是在新的SDK中,在GTLDriveFile中没有downloadURL个对象。

在另一个例子中,它要求客户端密钥,但是当我选择iOS类型时,则没有客户端密钥的选项。但是,当我选择网络时,它正在显示。但它没有用。

请使用目标c帮助我如何从iOS中的谷歌驱动器下载文件。

2 个答案:

答案 0 :(得分:1)

这可以帮助您在URL

中添加密钥(iOS的API密钥)参数
GTLDriveFile *myfile;//Your File Object
    NSString *url = [NSString stringWithFormat:@"https://www.googleapis.com/drive/v3/files/%@?key=YOUR_KEY_iOS",
                     myfile.identifier];
    GTMSessionFetcher *fetcher = [self.service.fetcherService fetcherWithURLString:url]; //GTLServiceDrive *service;

    [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) {
        if (error == nil) {
            NSLog(@"Retrieved file content");
            // File Downloaded!
        } else {
            NSLog(@"An error occurred: %@", error);
        }
    }];

答案 1 :(得分:0)

来自Google文档:

https://developers.google.com/drive/v2/reference/files/get

+ (void)downloadFileContentWithService:(GTLServiceDrive *)service
                                  file:(GTLDriveFile *)file
                       completionBlock:(void (^)(NSData *, NSError *))completionBlock {
  if (file.downloadUrl != nil) {
    // More information about GTMHTTPFetcher can be found on
    // <a href="http://code.google.com/p/gtm-http-fetcher">http://code.google.com/p/gtm-http-fetcher</a>
    GTMHTTPFetcher *fetcher =
      [service.fetcherService fetcherWithURLString:file.downloadUrl];

    [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) {
      if (error == nil) {
        // Success.
        completionBlock(data, nil);
      } else {
        NSLog(@"An error occurred: %@", error);
        completionBlock(nil, error);
      }
    }];
  } else {
    completionBlock(nil,
                    [NSError errorWithDomain:NSURLErrorDomain
                                        code:NSURLErrorBadUrl
                                    userInfo:nil]);
  }
}

这可能是旧文档,所以看看这个答案:

Value of type 'GTLDriveFile' has no member 'downloadUrl'