Как я могу получить иерархию папок на диске Google?

Я хочу создать приложение, которое может просматривать файлы непосредственно с рабочего стола клиента в той же иерархии, что и его/ее хранилище на диске Google. Но для этого мне нужно получить иерархию папок для этой конкретной учетной записи пользователя. В моем приложении я пытаюсь просмотреть иерархию папок в виде дерева. Ниже приведен код:

internal async Task<TreeView> SetTreeView(TreeNode node, string fileId, TreeView treeview1)
    {
        TreeNode t;
        if (node == null)
        {
            t = new TreeNode();
        }
        else
            t = node;

        FilesResource.GetRequest req = driveservice.Files.Get(fileId);
        var root = req.Execute();
        FilesResource.GetRequest get;
            await DriveV2.Authorize();
            var childrenIds = DriveV2.GetChildren(root.Id);


        for ( int i = 0; i < childrenIds.Count; i++)
            {
                get = driveservice.Files.Get(childrenIds[i]);
                var file = get.Execute();
            var n = t.Nodes.Add(file.Name);

            SetTreeView(n,childrenIds[i], treeview1);
            }
        treeview1.Nodes.Add(t);
        //doc.Save("file.xml");

        return treeview1;
    }

Пожалуйста, поправьте меня, если я ошибаюсь в какой-либо момент, и предложите другие реализации, с помощью которых я могу получить иерархию либо в XML-файле (с сохранением идентификаторов папок), либо непосредственно в дереве.

Редактировать: код, который я написал, добавляет папки в древовидную структуру, но все на одном уровне, а не в иерархическом формате.


person HarsiddhDave    schedule 23.12.2016    source источник
comment
Что не так с этим кодом? Пожалуйста, сузьте свой вопрос... что вы ищете?   -  person rory.ap    schedule 23.12.2016
comment
@rory.ap На самом деле он добавляет папки в древовидную структуру, но не в иерархическом формате. Он просто отображает все папки на одном уровне.   -  person HarsiddhDave    schedule 23.12.2016
comment
На этот вопрос уже может быть дан ответ в stackoverflow .com/questions/6239544/   -  person ivayle    schedule 23.12.2016
comment
@IvayloPetrov У меня это сработало. Хотя мне пришлось изменить некоторые утверждения, чтобы заставить его работать с API Google Диска.   -  person HarsiddhDave    schedule 24.12.2016
comment
Несмотря на то, что на упомянутый вопрос есть принятый ответ, это не лучший ответ для Google Диска. Выполнение рекурсивных вызовов для последовательного получения содержимого папки занимает очень много времени. Лучший подход состоит в том, чтобы file.list запрашивал ВСЕ папки, извлекая идентификатор, имя/название и родителей. Когда у вас есть все папки, вы можете построить иерархию в памяти. Также имейте в виду, что нигде не сказано, что папки Диска образуют строгую иерархию. Папка-a может быть родителем папки-b, которая является родителем папки-a.   -  person pinoyyid    schedule 24.12.2016
comment
Вы можете проверить это отвечать..   -  person Divins Mathew    schedule 02.01.2017