2016-12-24 1 views
1

Ich versuche, Ordner und Dateien von Google Drive zu erhalten, und es gibt einige nicht offensichtliche Dinge, die ich nicht verstehen kann.Google Drive. NET API. Keine Metadaten für Dateien verfügbar

Als Erstes bekomme ich 37 Elemente - und das ist falsch, weil ich nie 37 Dateien auf meinem Laufwerk hatte, also wo all diese Dateien herkamen?

Zweitens erhalte ich keine Datei-Metadaten wie "Größe" oder "Erweiterung" oder "Eltern" - alle Eigenschaften sind "null" für mindestens die Hälfte aller zurückgegebenen Elemente - kann jemand erklären, was bedeutet "Eltern "sind" null "?

Und die letzte Sache, kann ich Dateien und Ordner Schritt für Schritt, wie in OneDrive, zB bekommen alle Dateien und Ordner von der Wurzel eines Laufwerks, und später Kinder aus dem ausgewählten Ordner (oder Download-Element, wenn es ist Datei)?

Soweit ich weiß, ich muss alle Dateien und Ordner und dann einen Baum bauen es um Benutzer zu zeigen, wie das für mich nicht gut, weil Sachen Multi-Elternschaft usw.

Hier Code ich verwenden, um Dateien und Eigenschaften zu erhalten:

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; 
} 

Hier ist, wie ich oben beschriebenen Methoden aufrufen:

UserCredential credential = Authorize(); 

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

an diesem Punkt, ich habe 37 Elemente und Eigenschaften wie „fileextension“, „vi ewedByMe "," Eltern "sind null. Kann jemand erklären, was passiert?

Antwort

1

Zunächst sollten Sie überprüfen, wie Ihre Berechtigung zum Zugriff auf das Konto des Benutzers lautet.

Zweitens, versuchen Sie die OAuth 2.0 Playground wie in der entsprechenden SO post vorgeschlagen, um zu testen, ob etwas in Ihrem Code oder in der API falsch ist. Auch in der Post angegeben, dass Dateien wie Ordner, Google Docs, die einfach Links sind, wird null sein.

Für die Tree Command-ähnliche Funktion für Ihr Google Drive hängt alles davon ab, wie Ihr Ansatz aussieht. Ich habe ein Tutorial mit Apps Script gefunden, das die grundlegenden Schritte zum Abrufen eines hierarchischen Baumdiagramms für Ihre Drive-Dateien zeigt.

Hoffe, das hilft.

+1

Wie ich in meinem Beitrag gezeigt habe - ich logge mich auf meinem eigenen Google Drive, und ich bin sicher, dass Code in Bezug auf "buildable" in Ordnung ist. Ich denke, ich habe bereits gefunden, was passiert ist, ich habe API v3 anstelle von API v2 verwendet. Anyways - thx für Ihre Zeit, wird Links überprüfen. – Overrided

Verwandte Themen