google-drive-api - Google Drive API 失败 - 来自您的计算机网络的异常流量
问题描述
Google Drive API GET 查询开始失败(我们在我们的一个客户端服务中使用这个 api):
https://www.googleapis.com/drive/v3/files/1ke4Yoxxxxxxxxxxxxxx?alt=media&access_token=ya29.ImG9BwT.....
很抱歉... ...但您的计算机或网络可能正在发送自动查询。为了保护我们的用户,我们现在无法处理您的请求。有关详细信息,请参阅 Google 帮助...“来自您的计算机网络的异常流量”
直到今天一切都很好。
刚刚用 curl 做了几个测试:
- HTTP GET 在 HTTP 标头中带有 access_token: curl -H "Authorization: Bearer ya29._valid_access_token" https://www.googleapis.com/drive/v3/files/1r5BT2WPrulQ6FyhT8RcqV51TVOThEmhK?alt=media
结果:成功,文件下载。
- HTTP GET 与 access_token 作为 HTTP 请求的一部分: curl https://www.googleapis.com/drive/v3/files/1r5BT2WPrulQ6FyhT8RcqV51TVOThEmhK?alt=media&access_token=ya29._valid_access_token
结果:错误
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "https://code.google.com/apis/console"
}
],
"code": 403,
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
}
请注意,Google API 项目已通过 Google 批准并处于 Production 状态!!!
嗨 Google 团队,您知道为什么会这样吗?
谢谢
解决方案
仅出于文档目的发布此内容。根据Tanaike 提供的参考资料,自 2020 年 1 月 1 日起:
将不再支持对使用查询参数中的访问令牌进行身份验证的 files.get、revisions.get 和 files.export 端点的下载调用。
只有下载媒体内容的请求 ( alt=media
) 会受到此更改的影响。
访问令牌应在 HTTP 标头中提供,Authorization: Bearer oauth2-token
或者,如果不可能,请遵循参考文档中提供的解决方法:
对于文件下载,重定向到 webContentLink,它将指示浏览器下载内容。如果应用程序想要向用户显示文件,他们可以简单地重定向到 v2 中的 alternateLink 或 v3 中的 webViewLink。
对于文件导出,使用所需的 mime 类型重定向到 exportLinks 中的导出链接,这将指示浏览器下载内容。
参考:
推荐阅读
- flutter - 如何在富文本中获得一些空间?
- json - 为什么 JSON 不能容忍最后一个元素后面的逗号?
- c - 如何检测是否有溢出,如果有,如何判断是正溢出还是负溢出?
- c# - 如何在 NUnit 中使用带有 TestCasesSource 的元组?
- docker - Kubernetes 上的超集
- javascript - 如何在角度 9 中更改 ngx-toastr 的宽度
- block - 带滑块的定制古腾堡块
- reactjs - 如何在反应中使用 useEffect 获取数据
- php - Prestashop 增强型电子商务 OrderConfirmation
- c# - MVC 中的异常处理