我想从 google-drive 下载文件。我已经从驱动器中获取了 GTLDriveFile 对象。但是这些文件对象的 downloadUrl 属性是 nil。
谷歌搜索更多,我知道 file.exportLinks 也有下载链接。但这也即将到来 nil。
我用这段代码来获取文件:
- (void)fetchFiles {
GTLQueryDrive *query =
[GTLQueryDrive queryForFilesList];
query.maxResults = 10;
[self.service executeQuery:query
delegate:self
didFinishSelectorselector(displayResultWithTicket:finishedWithObject:error];
}
- (void)displayResultWithTicketGTLServiceTicket *)ticket
finishedWithObjectGTLDriveFileList *)files
errorNSError *)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 来完成任务。
任何帮助将不胜感激。
Best Answer-推荐答案 strong>
当您进行初始身份验证时,您需要请求正确的范围 - 否则,您只能获得列出文件的权利,而不能下载它们。
类似的东西。
NSArray *scopes = [NSArray arrayWithObjects:kGTLAuthScopeDrive, nil];
authController = [[GTMOAuth2ViewControllerTouch alloc]
initWithScope:[scopes componentsJoinedByString" "]
clientID:self.clientId
clientSecret:self.clientSecret
keychainItemName:kKeychainItemName
delegate:self
finishedSelectorselector(viewController:finishedWithAuth:error];
您可以在我的新 Google Drive Picker 中看到这一切
https://github.com/ConfusedVorlon/HSGoogleDrivePicker
关于ios - GTLDriveFile 的下载地址为零,甚至 GTLDriveFileExportLinks 为零,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/31474731/
|