2016-12-24 11 views
1

私はGoogleドライブからフォルダとファイルを取得しようとしていますが、理解できない明白なものはいくつかあります。Googleドライブ.Net API。利用可能なファイルのメタデータがありません

まず、ドライブに37個のファイルが存在しないため、結果的に37個のアイテムが得られます。そのファイルはすべてどこから来たのですか?

第2に、「サイズ」、「拡張子」、「親」などのファイルメタデータは受信されません。返されるすべてのアイテムの少なくとも半分が「null」です。誰かが「親"は" null "ですか?

最後に、ドライブのルートからすべてのファイルとフォルダを取得し、後で選択したフォルダから子を取得するなど、OneDriveのようなファイルとフォルダを段階的に取得できますか(ifそれはファイルです)?

私にとってそれは良いではありませんとして私の知る限りでは、私は等のためのマルチ子育てもので、すべてのファイルとフォルダを取得し、ユーザーにそれを表示するためにツリーを構築する必要が

ここではコードです私は、ファイルとプロパティを取得するために使用します。vi」、この時点で

UserCredential credential = Authorize(); 

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

、私は「fileExtension」として37の項目、およびこのような性質を持っている:

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

は、ここで私は、上記のメソッドを呼び出すか方法ですewedByMe "、" parents "はnullです。誰かが何が起こるか説明できますか?

答えて

1

まず、あなたのアカウントがアクセスされているかどうかを確認する権限を確認したい場合があります。

第2に、関連するSO postで提案されているOAuth 2.0 Playgroundをチェックして、コードやAPIに問題がないかどうかをテストしてみてください。また、ポストの中には、フォルダのようなファイル、単にリンクであるGoogle Docsはnullになると述べられています。

Googleドライブのツリーコマンドのような機能は、アプローチがどのように変化するかによって異なります。 Apps Scriptを使用したチュートリアルを見つけました。このチュートリアルでは、ドライブファイルの階層ツリー図を取得するための基本的な手順を示します。

これが役に立ちます。

+1

私は私のポストを指摘しました。私は自分のGoogleドライブにログインしています。コードは "buildable"という言葉でうまくいきます。 私はすでに何が起こったのかを知ったと思います。API v2を使用する代わりにAPI v3を使用しました。 あなたの時間のためにとにかく - thx、リンクをチェックします。 – Overrided

関連する問題