prasmussen gdriveを導入→403エラー→解決までのお話

Google Driveにファイルをアップロードする際、毎回ブラウザを立ち上げてファイルをドラッグ&ドロップ・・・という作業が面倒くさかったため、prasmussen gdrive (Google Drive CLI Client)を導入した。

コマンドプロンプトからGoogle Driveへファイルをアップロードできるため、バックアップ処理のバッチ化のために導入(導入方法や使い方はここここが詳しい)。

しばらくは問題なく使用できていたのだが、最近になって下記のエラーによりアップロードができなくなっていた。

Failed to get file: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded

初めは「そんなにたくさんファイルアップロードしてないけど、使い過ぎだったのかな?」と思っていたが、どうやらユーザー単位ではなく、アプリケーションに割り当てられたAPIの利用限度に達してしまった様子。おそらくこのアプリケーションを使っている全員が同じ現象に見舞われているだろう。

 

 

解決方法があった!


予想的中。皆さん困っていたようで、GitHubのIssueページに解決策が書き込まれていた。
TUTORIAL: How to get rid of 403 Errors (For Windows) · Issue #426 · prasmussen/gdrive · GitHub

要約すると「自分でGoogle Drive APIを申請し、コンパイルし直す」ということ。詳細は上記リンク先を確認して欲しいが、以下に簡単に紹介しておく。

 

1.Goのダウンロード&インストール


Goという言語で書かれているそうなので https://golang.org/dl/からダウンロードしてインストール。

 

2.Gitのダウンロード&インストール


GitHubからプロジェクトを取り込むためにGitもインストール。

 

3.プロジェクトファイルのダウンロード


プロジェクトをZIP形式でダウンロード。
51983299-9a11d680-2498-11e9-81d3-fa6f6e8ddd86.png
任意の場所に解凍しておく。

 

4.APIの登録


Google Developer APIにアクセスし、「新しいプロジェクト」をクリックしてプロジェクトを作成。
001.png

プロジェクトを作成したら、Google Drive APIのページに移動し、これを有効化する。
003.png

「認証情報」→「認証情報を作成」→「ウィザードで選択」の順に選択。
002.png

・使用するAPI「Google Drive API」
・APIを呼び出す場所「その他のUI(Windows、CLIツールなど)」
・アクセスするデータの種類「ユーザーデータ」
を選択して登録する。
004.png

クライアント情報が表示される。この「クライアントID」と「クライアントシークレット」を後で使用する。
005.png

 

5.クライアント情報を書き換え


3で解凍したファイルのうち、handlers_drive.goを開き、ClientIdとClientSecretを先ほど取得したものに置き換える。
51984552-f0ccdf80-249b-11e9-9cd3-af6d7550f3e4.png

 

6.コンパイル


コマンドプロンプトを起動し、先ほど書き換えたhanderls_drive.goがあるフォルダへ移動。
そして以下のコマンドを実行
go get github.com/prasmussen/gdrive

go build

するとexeファイルが作成される。これでAPI IDを自分のものに置き換えたexeファイルの作成が完了。

 

7.認証情報の削除


%appdata%フォルダにある.gdriveを削除すれば既存の認証情報が消える。
コンパイルしたexeを初回実行する際、再度認証が必要になる。認証後、これまでと同じようにGoogle Driveにアクセスできるようになった。

 
とりあえず一件落着。日本語の情報がなかったので何かの参考になれば。

コメントする