2016-12-24 74 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

相關問題