解决gdrive报错Error 403: Rate Limit Exceeded

Linux, 折腾 2019/05/28

一直在用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行左右的 ClientIdClientSecret 修改为上一步申请到的客户端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的源码目录出现可执行文件 gdrivegdrive.exe

开始使用

复制可执行文件至 /usr/bin/gdrive

cp gdrive /usr/bin/gdrive
chmod 755 /usr/bin/gdrive

这样就可以使用集成我们自己申请的API凭据的gdrive客户端了,正常情况下不会触发谷歌的API频次上限

gdrive的使用方法参考:Linux下Google Drive同步软件

本文标签:


评论(*号为必填项)