iOS Google Drive SDK 获取子文件夹 ID

Posted

技术标签:

【中文标题】iOS Google Drive SDK 获取子文件夹 ID【英文标题】:iOS Google Drive SDK Get Sub folder ID 【发布时间】:2014-04-28 17:49:52 【问题描述】:

我有以下代码,列出了根目录下的文件,但没有列出根目录下的任何子文件夹:

NSString *parentId = @"root";

GTLQueryDrive *queryDrive = [GTLQueryDrive queryForFilesList];
queryDrive.q = [NSString stringWithFormat:@"'%@' in parents and trashed=false", parentId];

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

     if (error == nil)
     
         NSLog(@"Number of files: %i", [files.items count]);

         NSLog(@"Have results");
         // Iterate over files.items array
         for(GTLDriveFile *file in files)
         
             NSLog(@"File Title:  %@ | ID: %@",file.title, file.identifier);
         
     
     else
     
         NSLog(@"An error occurred: %@", error);
     
 ];

这列出了我在文件夹中的 7 个文件,但在这 7 个文件的同一级别,我有一个子文件夹。

例如:

根->file1 根->文件2 ...ETC 都回来了

但是 root->MyFolder 没有在结果集中列出。

有什么想法吗?

【问题讨论】:

好的,我找到了解决方案。我试图获取 id 的子文件夹是手动创建的。我尝试在代码中创建一个子文件夹,现在该子文件夹显示为 id。因此,通过在代码中创建文件夹,我能够做我需要做的事情。 对于现有子文件夹,您可以使用parentID = 'root' 为所有GTLDriveFiles 枚举mimeType = application/vnd.google-apps.folder - 为每个应用类型为...GTLQueryDrive *query = [GTLQueryDrive queryForChildrenListWithFolderId:file.identifier]; 的子查询,然后是[<GTLDriveService instance> executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLDriveChildList *driveFolderChildren, NSError *error) ]。跨度> 【参考方案1】:

您可能想要检查您是如何验证您的应用的。如果您仅使用应用程序的文件作为您的范围进行身份验证,您将看不到在您的应用程序之外创建的其他文件和文件夹。

当您像这样进行身份验证时:

self.gDriveAuthenticationViewController = GTMOAuth2ViewControllerTouch(scope:kGTLAuthScopeDrive,
        clientID:clientId,
        clientSecret:clientSecret,
        keychainItemName:keychainName,
        delegate:self,
        finishedSelector:"viewController:finishedWithAuth:error:")

使用范围:kGTLAuthScopeDrive 而不是 kGTLAuthScopeDriveFile

【讨论】:

以上是关于iOS Google Drive SDK 获取子文件夹 ID的主要内容,如果未能解决你的问题,请参考以下文章

google drive SDK for iOS 是不是支持 64 位架构?

iOS 中的 Google Drive SDK

使用Google Drive SDK获取文件的公共链接

获取Google Drive SDK中共享用户的电子邮件地址

google-drive-sdk 导出每日限制未经身份验证的使用

具有多个用户帐户的Google Drive SDK OAuth2