2016-12-24 43 views
1

我试图从Google云端硬盘中获取文件夹和文件,并且有一些非明显的东西我无法理解。Google Drive .Net API。没有可用文件的元数据

首先,我得到了37项作为结果 - 这是错误的,因为我从来没有在我的驱动器上有37个文件,所以这些文件来自哪里?第二,我没有收到像“大小”或“扩展名”或“父母”这样的文件元数据 - 所有这些属性在返回的所有项目中至少有一半是“空” - 有人可以解释什么是“父母” “是”空“?

最后一件事,我可以像OneDrive一样逐步获取文件和文件夹,例如,从驱动器的根目录获取所有文件和文件夹,然后从选定文件夹中获取子项(或下载项目if它是文件)?

据我知道,我必须得到所有文件和文件夹,然后建立一个树展示给用户,因为对我来说,这不是好,因为多育儿的东西等

这里的代码我用它来获取文件和属性:

public UserCredential Authorize() 
{ 
    UserCredential credential = null; 

    using (var stream = 
      new FileStream("path_to_secret.json", FileMode.Open, FileAccess.Read)) 
    { 
     string credPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); 
     credPath = Path.Combine(credPath, "path_to_save_creds.json"); 

     credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
       GoogleClientSecrets.Load(stream).Secrets, 
       Scopes, 
       "user", 
       CancellationToken.None, 
       new FileDataStore(credPath, true)).Result; 
    } 

    return credential; 
} 

public List<File> RetrieveAllFiles(DriveService service) 
{ 
    List<File> result = new List<File>(); 
    FilesResource.ListRequest request = service.Files.List(); 
    request.Fields = 
      "nextPageToken, files(name, id, size, kind, parents, sharedWithMeTime, shared, sharingUser, fileExtension, viewedByMe, viewedByMeTime, trashed)"; 
    request.Spaces = "drive"; 

    do 
    { 
     try 
     { 
      FileList files = request.Execute(); 

      result.AddRange(files.Files); 
      request.PageToken = files.NextPageToken; 
     } 
     catch (Exception e) 
     { 
        /*handle exception here*/ 
     } 
    } while (!String.IsNullOrEmpty(request.PageToken)); 
    return result; 
} 

这里的我怎么调用上述方法:

UserCredential credential = Authorize(); 

var service = new DriveService(new BaseClientService.Initializer() 
{ 
     HttpClientInitializer = credential, 
     ApplicationName = ApplicationName, 
}); 
var googleFiles = RetrieveAllFiles(service); 

在这一点上,我有37项,而这种性质的“fileExtension”,“六ewedByMe“,”父母“为空。有人可以解释发生了什么?

回答

1

首先,您可能想要检查您的授权以查看谁的帐户正在被访问。

其次,请按照相关SO post中的建议检查OAuth 2.0 Playground,以测试代码或API中是否出现错误。在帖子中还指出,像文件夹这样的文件,只是链接的Google Docs将为空。

对于您的Google云端硬盘中的树状命令功能,它将取决于您的方法。我找到了一个使用Apps Script的教程,它将显示获取Drive文件的分层树形图的基本步骤。

希望这会有所帮助。

+1

正如我在我的文章中指出的 - 我登录到自己的GoogleDrive,并且我确定代码在“可构建”方面没有问题。 我想我已经找到发生了什么,我使用API​​ v3而不是使用API​​ v2。 反正 - thx为你的时间,将检查链接。 – Overrided

相关问题