无法再下载文件

时间:2019-03-08 04:47:29

标签: c# google-api google-drive-api google-api-dotnet-client

我有一个系统,我们在其中使用服务帐户连接到Google Drive SDK。它已经正常运行了大约6个月,但是从一周前开始,没有任何代码更改,它不再能够从Google云端硬盘下载文件。我们仍然可以列出文件,但是下载现在会跳至授权页面,而不是下载文件。我确定我的服务帐户具有该文件的权限。

要下载文件,请使用以下代码:

var downloader = new MediaDownloader(driveService);
var stream = new MemoryStream();
var download = await downloader.DownloadAsync(file.Url, stream);
if (download.Exception != null) throw download.Exception;
// Reset to the begining for replay
stream.Seek(0, SeekOrigin.Begin);
return stream;

2 个答案:

答案 0 :(得分:0)

解决方案

  • 您可以共享

  • (xxxxx@gmail.com)的文件夹

  • 使用(xxx@xxx.iam.gserviceaccount.com)

  • 然后相同的代码将起作用

为什么

  • 有2个用户:

    • GC语言服务帐户(xxx@xxx.iam.gserviceaccount.com)

    • Google云端硬盘帐户(xxxxx@gmail.com)

  • 您不能使用您的GClould服务帐户访问Google云端硬盘应用

如何

enter image description here

答案 1 :(得分:0)

我遇到了类似的问题,这对我有用:

Google.Apis.Drive.v2.Data.File file = service.Files.Get(fileId).Execute();
if (!file.MimeType.Equals("application/vnd.google-apps.spreadsheet"))
{
    //for files use another Url
    exportUrl = file.DownloadUrl;
}
var response = service.HttpClient.GetByteArrayAsync(exportUrl).Result;
Stream downloadStream = new MemoryStream(response);