Я пытаюсь получить папки и файлы с Google Диска, и есть некоторые неочевидные вещи, которые я не могу понять.API Google Диска .Net. Нет метаданных для доступных файлов
Прежде всего, я получаю 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», «VI ewedByMe "," родители "имеют значение null. Может кто-нибудь объяснить, что происходит?
Как я указал в своем посте - я вхожу в свой собственный GoogleDrive, и я уверен, что код в порядке «buildable». Я думаю, что уже нашел, что произошло, я использовал API v3 вместо использования API v2. Anyways - thx для вашего времени, проверит ссылки. – Overrided