通过IOS Google Drive SDK列出Google云端硬盘的所有文件夹

时间:2013-06-20 12:39:12

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

实际上我将google-drive-sdk与我的ios应用程序集成在一起。我可以通过google-drive-sdk for iOS在谷歌驱动器上传指定的文件。此外,我想提供一种功能,用于从用户希望在Google云端硬盘上上传该文件的可用文件夹中选择文件夹。

因此,我找到了如何列出Google云端硬盘的所有文件,但无法找到如何列出Google云端硬盘的所有文件夹。

我还在Google Developer网站上浏览了整个API reference,但没有找到任何解决方案。

我找到了某个地方,使用下面的代码文件夹列表可以完成,所以尝试了但它没有用。

GTLQueryDrive *query = [GTLQueryDrive queryForFilesList];
query.q = @"mimeType='application/vnd.google-apps.folder' and trashed=false";

[self.driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket,
                                                          GTLDriveFileList *files,
                                                          NSError *error) {

    if (error == nil) {
        NSLog(@"Array of folder: %@", files.items);
    } else {
        NSLog(@"An error occurred: %@", error);
    }
}];

那么有没有使用google-drive-sdk从Google云端硬盘获取文件夹列表的解决方案?

3 个答案:

答案 0 :(得分:2)

假设此代码有效,则查询中存在问题。多个查询应由组合。

query.q = @"mimeType='application/vnd.google-apps.folder' and trashed=false";

有关示例查询的更多示例,请查看官方文档中的Search for Files

此外,如果此代码不起作用,您希望将Files.list()与上面的查询一起使用。检查链接,您可能想要使用Object-c的示例代码。

答案 1 :(得分:1)

您使用的范围是什么?确保你正在使用

kGTLAuthScopeDrive = @" https://www.googleapis.com/auth/drive";

示例:

NSString *scope = kGTLAuthScopeDrive;

GTMOAuth2ViewControllerTouch *authViewController =
[[GTMOAuth2ViewControllerTouch alloc] initWithScope:scope
                                           clientID:kClientId
                                       clientSecret:kClientSecret
                                   keychainItemName:kKeychainItemName
                                           delegate:self
                                   finishedSelector:finishedSelector];

[self presentViewController:authViewController animated:YES completion:nil];

答案 2 :(得分:0)

使用适当的范围。

有限的drive.file范围,只允许它访问它创建的文件或用户使用它打开的文件。

完整的驱动器范围,允许该应用管理所有用户的云端硬盘文件。

强烈建议尽可能要求范围有限。有关所有可用范围的详细信息,请查看Google Drive SDK文档:

https://developers.google.com/drive/scopes