我试图从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“,”父母“为空。有人可以解释发生了什么?
正如我在我的文章中指出的 - 我登录到自己的GoogleDrive,并且我确定代码在“可构建”方面没有问题。 我想我已经找到发生了什么,我使用API v3而不是使用API v2。 反正 - thx为你的时间,将检查链接。 – Overrided