下载-GTLDriveFile的url即将推出,甚至GTLDriveFileExportLinks即将推出

时间:2015-07-17 11:24:42

标签: ios google-drive-api

我想从google-drive下载文件。我从驱动器中获取了GTLDriveFile对象。但这些文件对象的 downloadUrl 属性为 nil

谷歌搜索更多,我得到 file.exportLinks 也有下载链接。但那也是 nil

我使用此代码来获取文件:

- (void)fetchFiles {

GTLQueryDrive *query =
[GTLQueryDrive queryForFilesList];
query.maxResults = 10;
[self.service executeQuery:query
                  delegate:self
         didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)];
       }

- (void)displayResultWithTicket:(GTLServiceTicket *)ticket
         finishedWithObject:(GTLDriveFileList *)files
                      error:(NSError *)error {
if (error == nil) {
    if (files.items.count > 0) {
        fileArr=files.items;
    }
}
}

此处 fileArr 包含GTLFileDrive类的文件。

在Google-drive开发者网站上,我使用参数Url获得了以下代码片段来下载文件:

GTMHTTPFetcher *fetcher = [self.service.fetcherService fetcherWithURLString: urlOfFile];
[fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) {
    if (error == nil) {

        NSLog(@"Retrieved file content");
        // Do something with data

    } else {

        NSLog(@"An error occurred: %@", error);
    }
}];

我需要urlOfFile来完成任务。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

当您进行初始身份验证时,您需要请求正确的范围 - 否则,您只有权列出文件,而不是下载它们。

类似的东西。

NSArray *scopes = [NSArray arrayWithObjects:kGTLAuthScopeDrive, nil];
authController = [[GTMOAuth2ViewControllerTouch alloc]
                  initWithScope:[scopes componentsJoinedByString:@" "]
                  clientID:self.clientId
                  clientSecret:self.clientSecret
                  keychainItemName:kKeychainItemName
                  delegate:self
                  finishedSelector:@selector(viewController:finishedWithAuth:error:)];

您可以在我的新Google云端硬盘选择器中看到这一切

https://github.com/ConfusedVorlon/HSGoogleDrivePicker