在 Google API 资源管理器中检索到 Google Drive 网络视图链接,但在我的代码中没有

Posted

技术标签:

【中文标题】在 Google API 资源管理器中检索到 Google Drive 网络视图链接,但在我的代码中没有【英文标题】:Google Drive web view link retrieved in Google API explorer, but not in my code 【发布时间】:2022-01-16 09:14:38 【问题描述】:

我有将文件上传到 Google Drive 并设置适当权限的代码,以便域中的任何人都可以阅读它们。

如果我使用Google Drive API explorer 并输入文件的 ID 并在“字段”文本框中输入“webViewLink”,那么当我执行请求时,我会看到类似这样的内容(实际链接被混淆)...


 "webViewLink": "https://drive.google.com/file/d/abcdef123456/view?usp=drivesdk"

在私人浏览器窗口中输入链接可以让我按预期查看文件。

但是,如果我尝试在我的 C# 代码中获取链接...

FilesResource.GetRequest request = _service.Files.Get(fileId);
request.Fields = "webViewLink";
var file = await _service.Files.Get(fileId).ExecuteAsync();

...那么file.WebViewLink 属性始终为空。查看网络选项卡,似乎是使用相同的参数调用相同的 API,

有人有什么想法吗?我已经仔细检查过,并且我在 API 资源管理器和我的代码中使用了同一个 Google 帐户(我知道这一点,否则我将无法看到驱动器中的其他文件)

【问题讨论】:

【参考方案1】:

您的 C# 代码设置了一个请求并在其上设置了 Fields,但随后您再次调用了 _service.Files.Get(fileId),因此您忽略了使用附加 Fields 设置的原始请求,因此它使用默认Fields 而不是你设置的。

尝试使用var file = await request.Get(fileId).ExecuteAsync();,这样它将使用为该请求设置的Fields

【讨论】:

哼哼,我想我已经过了睡觉时间了!谢谢

以上是关于在 Google API 资源管理器中检索到 Google Drive 网络视图链接,但在我的代码中没有的主要内容,如果未能解决你的问题,请参考以下文章

使用 API 从 Google 日历中检索事件

使用 Go 在 Google Container/Compute Engine 中登录到 Google Cloud

如何在flutter中将标记从firebase(真实数据库)检索到新的google maps api

在 Google 跟踪代码管理器中,触发器类型“表单提交”适用于 Google 表单提交吗?

缺少 API 级别 25 的 Google API

Angular 4 前端中的 CORS 问题,Google Cloud Endpoints 运行 go API 后端