我正在使用谷歌驱动器下载文件。但是我使用谷歌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中的谷歌驱动器下载文件。
答案 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]);
}
}
这可能是旧文档,所以看看这个答案: