Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用C从google drive下载公共共享文件#_C#_Google Drive Api - Fatal编程技术网

C# 如何使用C从google drive下载公共共享文件#

C# 如何使用C从google drive下载公共共享文件#,c#,google-drive-api,C#,Google Drive Api,我正在尝试使用C#从Google Drive下载一个公共共享文件 这是我目前使用的代码 DriveService.Files.Get(fileId); 其中文件ID取自URL https://drive.google.com/file/d/{ fileID }/view?usp=sharing 现在这一切似乎都应该工作没有问题,但我得到了一个文件未找到的错误,每次 我以前通过从共享的公用文件夹中获取文件列表来实现这一点,我通过使用此查询成功地实现了这一点 ListRequest reques

我正在尝试使用C#从Google Drive下载一个公共共享文件

这是我目前使用的代码

DriveService.Files.Get(fileId);
其中
文件ID
取自URL

https://drive.google.com/file/d/{ fileID }/view?usp=sharing
现在这一切似乎都应该工作没有问题,但我得到了一个文件未找到的错误,每次

我以前通过从共享的公用文件夹中获取文件列表来实现这一点,我通过使用此查询成功地实现了这一点

ListRequest request = service.Files.List();
request.Q = $"'{ folderID }' in parents";
request.Fields = "files(mimeType,id,modifiedTime,name,version,originalFilename)";
家长中的
部分是这一部分工作的原因,但是我想不出类似的方法来让
Get
查询工作,如果给了正确的ID并且我有权限,它似乎应该工作

我肯定是正确登录的,因为我可以下载其他文件,所以我知道这也不是问题所在


任何帮助都将不胜感激。

request.Execute()返回的文件资源包含一个
WebContentLink
属性。它是使用基于cookie的身份验证下载内容的链接。在公开共享内容的情况下,无需任何凭据即可下载内容

或者您可以(在API v2中)执行以下操作:

如果您试图下载的文件是本机Google Docs格式,则不会有下载链接。如果是这种情况,您必须查找
ExportLinks


您将有多个导出链接,因此您必须选择最适合您的格式。

当通过
GoogleWebAuthorizationBroker.AuthorizationAsync()
进行身份验证时,问题最终与权限范围有关

我以前玩过这些,我认为它不起作用,但事实证明,要使这些更改真正起作用,您必须删除所有以前的凭据。见评论

要读取公共文件,我必须在我的作用域中添加以下权限

DriveService.Scope.DriveReadonly

希望现在没有其他人会盯着屏幕看几个小时。

首先,尝试检查它是否适用于您声明要下载Google文档,请使用files.export方法。导出使用与在驱动器中下载其他内容相同的alt=media方法。这里有一个.NET代码示例。有关详细信息,请检查此项和。此项无效。我仍然收到一个文件未找到错误。上面的代码已经测试并运行。你一定是做错了什么……我的意思是我已经有了这样的代码。下载通过我的应用程序创建的项目文件时,我对该代码没有问题。我想我的问题是我无法找到问题中提到的文件,因为某种原因,这个公共文件找不到。好的。似乎文件ID有问题。您确定您正确获取了文件ID吗?请用您的相关代码更新问题。最终解决了它,所有这些都与作用域有关。谢谢你的努力。
DriveService.Scope.DriveReadonly