【发布时间】:2020-08-26 15:41:30
【问题描述】:
我们正在使用 Google Drive .NET SDK 读取一组与我们公开共享的 Google Drive 文件夹,以便为我们的客户下载图像。该应用程序是一个简单的 .NET 控制台应用程序,它使用 SDK 的 API 密钥,因为我们不进行任何用户身份验证等。
_driveService = new DriveService(new BaseClientService.Initializer()
{
ApiKey = googleApiKey,
ApplicationName = ApplicationName
});
我们只需从 Google Drive 文件夹中获取图片列表,然后通过它们循环下载每个图片:
var request = _driveService.Files.Get(fileId);
request.MediaDownloader.ProgressChanged += (IDownloadProgress progress) =>
{
switch (progress.Status)
{
case DownloadStatus.Downloading:
{
break;
}
case DownloadStatus.Completed:
{
our logic here
break;
}
case DownloadStatus.Failed:
{
break;
}
}
};
request.Download(stream);
这一直很好,直到最近我们收到了 DownloadStatus.Failed 状态,异常是包含以下内容的 HTML 消息:
<h1>We're sorry...</h1>
<p>... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now.</p></div><div style="margin-left: 4em;">See <a href="https://support.google.com/websearch/answer/86640">Google Help</a> for more information.
现在错误不会立即发生。在该错误消息开始出现之前,我们可以成功执行大约 50 个请求。我们不知道我们必须“等待”多长时间才能发出另一个请求,但考虑到我们正在使用 Google SDK 以及具有 IP 的 Google API 密钥,我们目前没有想法并且非常沮丧限制。同样,我们使用的是 API 密钥,而不是 OAuth,因为这是一个控制台应用程序,一天内几乎没有 1,000 个文件获取请求,这远低于任何速率限制。我们甚至尝试在文件请求之间延迟一分钟,但这并不能阻止应用程序接收失败状态。
知道如何使用 API 密钥防止从控制台应用程序获取此消息吗?
【问题讨论】:
-
您能否验证您的配额使用情况并检查您是否未达到任何限制?
-
当然。在过去的 30 天里,我们总共向 Google Drive API 发出了 50,396 个请求。在过去的 2 天里,我们总共提出了 294 个请求。我们的应用程序每天只运行 1 次,以检查和下载我们的客户的任何新图像,并且在大约 50-75 个请求后它始终开始接收上述消息。
-
很遗憾没有。我也找到并阅读了那篇文章。我们使用的是 API 密钥而不是 Oauth 访问令牌,因为我们正在访问的文件是可公开访问的。这是主要区别,以及使用 Google 的 .NET SDK 的事实。无论 alt=media 标志是否被添加到请求中,都超出了我们的权限范围,因为我们使用的是最新版本的 Google 的 .NET SDK,并且我们没有通过 Javascript 等手动构建 URL。现在我不会不过,这个问题确实在 2020 年 2 月的时间范围内开始发生的可能性不予考虑,并且可能有一定的联系。
-
您对此有进一步了解或了解更多信息吗?
标签: google-drive-api