我試圖從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