我想从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来完成任务。
非常感谢任何帮助。
答案 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云端硬盘选择器中看到这一切