描いたイラストなどをサーバ(Linux)で解像度変更等を実施しているのですが、処理の流れで「Google ドライブ」へファイルをアップロードしてバックアップをするための方法です。
なるべく手を抜くことをモットーとしているので、世の中で提供されているものをなるべく使います。
今回は、「gdrive」というGoogleドライブと同期をとるツールを利用します。
導入方法などは以下サイトを参考にしました。
https://www.nextdoorwith.info/wp/se/linux-gdrive/
早速ですが、導入して同期ができない問題が発生。
よくよく調べると提供しているgdrive実行ファイルの中で、Google Drive APIで使用しているキー情報が固定で埋め込まれていることから、1日の使用量上限にすぐに到達してしまっているよう…
この記事はその辺の解決までに至った手順を粗々で記載します(o^―^o)ニコ
参考にしたサイトはコチラ
https://7mc.org/2019/03/04/prasmussen_gdrive_403_error_solution.html
1.コンパイル環境の準備
gdriveはGOというプログラミング言語で作られているので、下記コンパイル環境を取得します。
https://golang.org/dl/
2.プロジェクト環境の準備
GitHubからプロジェクトを取り込むためにGitもインストール。
https://git-scm.com/downloads
3.プロジェクトファイルのダウンロード
「gdrive」にアクセスし、「Clone or download」ボタンからソース一式をダウンロードします。
4.APIの登録
Google Developer APIにアクセスしAPIを登録します。
https://console.developers.google.com/apis/dashboard
1)「新しいプロジェクト」を選択し作成
2)「APIとサービスを有効化」から「Google Drive API」を選択
3)「Google Drive API」で「有効にする」を選択し、APIを有効化する
4)「Google Drive API」で「認証情報」を選択する
5)「同意画面を構成」を選択する
6)「OAuth 同意画面」で「アプリケーション名」を入力し「保存」を選択する
7)「認証情報を作成」→「ウィザードで選択」を選択する
8)「プロジェクトへの認証情報の追加」画面で情報を入力し、「必要な認証情報」を選択
使用するAPI:「Google Drive API」を選択
APIを呼び出す場所:その他のUI(Windows、CLIツールなど)
アクセスするデータの種類:「ユーザーデータ」を選択
9)「OAuthクライアントIDを作成」を選択
10)「完了」を選択
11)「認証情報」を選択し、該当のクライアントID、シークレットを確認
5.ソース変更
3項で取得したプロジェクト内の「handlers_drive.go」をメモ帳等で開き、4項で取得したクライアントID、シークレットを書き換える。
対象箇所:ClientId,ClientSecret
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import ( "fmt" "io" "io/ioutil" "net/http" "os" "path/filepath" "time" "github.com/prasmussen/gdrive/auth" "github.com/prasmussen/gdrive/cli" "github.com/prasmussen/gdrive/drive" ) const ClientId = "367116221053-7n0vf5akeru7on6o2fjinrecpdoe99eg.apps.googleusercontent.com" const ClientSecret = "1qsNodXNaWq1mQuBjUjmvhoO" const TokenFilename = "token_v2.json" const DefaultCacheFileName = "file_cache.json" func listHandler(ctx cli.Context) { |
6.コンパイル/ビルド
コマンドプロンプトを起動し、5項で変更した「handlers_drive.go」が格納されているフォルダまで移動
以下コマンドを実行しコンパイルを実行
今回はLinux上で動作させたいためクロスコンパイル(Windows→Linux)を実施する。
下記サイトを参考に実施しました。
http://web-technical.hatenablog.com/entry/2017/11/14/113231
私の環境がWindowsなので、Windows目線で記載しています。
go get github.com/prasmussen/gdrive
1)外部ライブラリを導入
1 | go get github.com/prasmussen/gdrive |
2)現在の環境変数の確認
1 | go env |
3)実行環境がLinuxの64bit版なので、以下を設定
1 2 | set GOOS=linux set GOARCH=amd64 |
4)ビルド
1 | go build |
同階層に作成された実行ファイル「gdrive-master」を使用してください。
コメント