解决gdrive报错Error 403: Rate Limit Exceeded
一直在用gdrive来作为同步到Google Drive的工具,参考:Linux下Google Drive同步软件
最近老是出现错误:Failed to get file: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded
今天就记录一下解决方法
问题原因
出现403错误是因为gdrive使用的谷歌的API使用频率超限,这个API调用的凭据(Credentials)是集成在gdrive里的,使用的人太多了,就导致超限错误。
所以为了解决这个错误,就需要把gdrive里内置的ClientId和ClientSecret替换为我们自己的。
申请API
1.登录 Google API服务:
https://console.developers.google.com/apis/dashboard
可能需要同意服务条款
2.创建项目
项目名称随意填写
3.启用Google Drvie API
打开 https://console.developers.google.com/apis/library/drive.googleapis.com 点击启用
4.创建凭据
创建OAuth同意屏幕
创建凭据,选择OAuth客户端ID
选择应用类型
5.保存信息
随后就会出现客户端 ID 和密钥
记住 客户端ID
和 客户端密钥
修改Gdrvie源码
将gdrive源码git回本地
git clone https://github.com/gdrive-org/gdrive.git
打开gdrvie源码目录下的 handlers_drive.go 文件
将17行左右的 ClientId
和 ClientSecret
修改为上一步申请到的客户端ID
和 客户端密钥
保存文件
重新编译
gdrvie是用go语言编写的,所以先准备go环境
wget https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.12.5.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version
可以看到go环境版本为1.12.5,开始编译
注:这里的编译的是所有平台下的gdrive,比较慢。如仅需编译某个平台下的版本,见后文
#需要将工作目录切换到gdrive源码目录下
cd gdrive
go get github.com/gdrive-org/gdrive
sh _release/build-all.sh
编译指定系统版本
其中 系统名称
和 架构
参考这里:https://golang.org/doc/install/source#environment
#export GOOS=系统名称
#export GOARCH=架构
#如:Linux 64位
export GOOS=linux
export GOARCH=amd64
#开始编译
go build -ldflags '-w -s'
完成后,会在gdrive的源码目录出现可执行文件 gdrive
或 gdrive.exe
开始使用
复制可执行文件至 /usr/bin/gdrive
cp gdrive /usr/bin/gdrive
chmod 755 /usr/bin/gdrive
这样就可以使用集成我们自己申请的API凭据的gdrive客户端了,正常情况下不会触发谷歌的API频次上限
gdrive的使用方法参考:Linux下Google Drive同步软件
2 条评论
请教博主,403 userRateLimitExceeded这个问题怎么解呢?
@兵
看样子好像触发了谷歌API的速率或者同时请求数限制,你是不是传的东西太多了?
https://developers.google.com/drive/api/v3/handle-errors