如何在終端機介面使用 Google Drive (gdrive cmd)

最近因為想要把 VPS 上面的資料備份到 Google Drive 上面,所以研究了一些方案。其中一個方法是使用 gdrive 這個工具。不過按照教學安裝完成並且嘗試獲得 token 時卻出現了「Sign in with Google temporarily disabled for this app. This app has not been verified yet by Google in order to use Google Sign In.」的錯誤。

研究一下之後找到了解決的流程,在這邊寫一次方便其他有用到這個工具的人。

問題發生的原因是因為 Google 在近期有一個新的政策,就是如果一個使用 Google API 的 App 使用者太多的話,該 App 需要經過 Google 審核才可以使用。那要解決也很簡單,就是我們把原始碼裡面的 API key 換成我們自己的,Google 就會認為這是另外一個 App 了,而換過的 App 因為只有我自己用,自然不會超過限制。

要編譯 gdrive,需要用 Go 語言,在 macOS 上我們可以直接下 brew install go 就安裝好環境了。

接著輸入 go get github.com/prasmussen/gdrive,這樣就可以下載原始碼。找到 ./go/src/github.com/prasmussen/gdrive/handlers_drive.go,看到 ClientIdClientSecret,這就是我們要替換的目標。

下一步,到 Google APIs 主頁面,按左上角的「選取專案」後選擇「新增專案」,名字就自己隨便取名吧。再到 Google Drive API 頁面,按「啟用」,這邊要確認左上角的專案名稱是你剛剛新增的專案才行。

再來,到 憑證 頁面,選擇設定 OAuth 同意畫面,這邊只有應用程式名稱是必填,其他留空沒差。設定完之後,選擇「建立憑證」下的「OAuth 用戶端 ID」,這樣就會獲得 Id 跟 Secret 了,替換到我們打開的程式碼中即可。

接著要編譯新版的 binary,先 cd ./github.com/prasmussen/gdrive,因為我的 VPS 是 linux 但是我編譯環境是 macOS,所以要指定一下編譯目標,輸入CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build,這樣就會出現新的 binary 了。

生成 binary 之後丟進去 VPS 裡面 chmod +x,然後輸入 gdrive list,再按照出現的提示進行認證,應該就會成功。

發佈留言