はじめに
SkickaはGoogleDriveにコマンドラインでアクセス可能になるツールです。手元にある合計数百GB程度のファイルをGoogleDriveにアップロードするのに2019年~2021年頃に(確か)使っていました。
ところが久々に(執筆時の2023年1月22日)Skickaを使おうとしたら今までのやり方だと認証エラーになってしまい使えないことが判明...。使える方法を試行錯誤したところようやく連携できたので、その方法を共有いたします。
ほとんどは以下のサイトに書かれている内容をもとにしたものです。
※この記事のおかげで本記事も書けており、大変感謝しております m(_ _)m
やること概要
大きくは「クライアント」と「Google Cloud コンソール」でやる作業の2つになります。
(1) クライアントでやること
動作確認したのはUbuntuのみですが、他のLinuxディストリビューションやWindows,Macでも動くはず
- (1-1) Goのインストールとセットアップ
- (1-2) Skickaのインストール(Goのパッケージ)
- 基本はGitHubのREADMEにしたがってインストールすれば問題ないはず
- Goのバージョンや環境によっては、
go get
が使えずにgo install
を使う必要があるかも
- (1-3) ★Skickaの設定ファイル
~/.skicka.config
にGoogleCloudPlatform(GCP)で作成した認証情報を追加- GCPで作成した「OAuth2.0クライアント ID」の認証情報を利用
- 【注意】こちらは次の手順(2)で認証情報を生成後に行う必要あり
(2) Google Cloud コンソール(≒GCP)でやること
GCPを初めて利用する場合はこちらから開設が必要
- (2-1) プロジェクトを一つ用意
- 初めて作った場合は「My First Project」という名前のプロジェクトが存在
- (2-2) 選択したプロジェクトで以下3つの設定を行う
上記手順の中で★がついた内容に関して、以下で説明します。
手順詳細
(2-2-1) Google Drive APIの有効化
こちらをクリックすると以下のようなサイトに遷移するので、「有効にする」をクリック
(2-2-2) OAuth同意画面の作成
左上の「三」のアイコンをクリック後、「APIとサービスの」メニューを選択し「OAuth同意画面」をクリック(こちらに直接アクセスしてもOK)
以下のサイトが現れるので、「外部」をチェックして「作成」をクリック
「①Oauth同意画面」で、「アプリ名」「ユーザーメールアドレス」「デベロッパーの連絡先情報」を記入して「保存して次へ」をクリック
次の「②スコープ」は何も編集せずに「保存して次へ」をクリック(画面は非掲載)
「③テストユーザー」で「+ADD USERS」をクリックして、現在のGCPアカウントのメールアドレスを追加後、「保存して次へ」をクリック
「④概要」で設定項目を確認して「ダッシュボードに戻る」をクリック(画面は非掲載)
以上で設定完了です。
(2-2-3) OAuth2.0クライアントIDの発行
OAuth2で認証するためのクライアントIDとクライアントシークレットを発行します。
「有効なAPIとサービス」で「認証情報」をクリックし(こちらに直接アクセスしてもOK)、右ウインドウの「+認証情報を作成」をクリック
出てくるリストから「OAuthクライアントID」を選択してクリック(画面は非掲載)
アプリケーションの種類で「デスクトップアプリ」を選択後、適当な名前を入力して「作成」をクリック
「デスクトップアプリ」以外を選択するとskicka側での認証に失敗するようなので間違えないように注意!
「クライアントID」と「クライアントシークレット」が発行されるので、何らかの方法で保存する
(1-3) Skickaの設定ファイルに認証情報を追加
前の手順(2-2-3)で発行した「クライアントID」と「クライアントシークレット」の認証情報を、クライアントの~/.skicka.config
に記載します。
.skicka.config
がホームディレクトリに存在しない場合は、skicka init
を実行すれば生成されます。
具体的には、以下のclientid, clientsecretの左側についている;
を消して、それぞれにクライアントIDとクライアントシークレットを入力します。
; Default .skicka.config file. See
; https://github.com/google/skicka/blob/master/README.md for more
; information about setting up skicka.
[google]
;Override the default application client id used by skicka.
clientid=123456789012-xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
clientsecret=yyyyyyyyy
;An API key may optionally be provided.
;apikey=YOUR_API_KEY
...
configファイルの設定を行った後、skickaの何らかのコマンドを実行すると、OAuth2認証を行うURLが以下のように表示されます。
-no-browser-auth
オプションは、クライアントにsshなどで別の端末からログインしている場合にWeb認証するために必要となります。
$ skicka -no-browser-auth df
Go to the following link in your browser:
https://accounts.google.com/o/oauth2/auth?client_id=123456789012-xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=st1674395246803981550
Enter verification code:
表示されたURLにWebブラウザからアクセスすると、上手くいけば以下のような認証画面が出てきます!
(どこかで設定を間違うと残念ながらここでエラーになります...)
ログインするアカウントを選択してクリック後に警告メッセージ等が出てきますが、気にせずに「続行」をクリック(画面は非掲載)
以下のように発行された認証コードをコピーして、端末のEnter verification code:
の後に認証コードを貼り付け
認証に成功すると、例えば以下のようにskickaを利用可能になります!
$ skicka df
Capacity 15.00 GiB
Trash 0 B 0.00%
Drive 0 B 0.00%
Gmail 299.42 MiB 1.95%
Photos 0 B 0.00%
Free space 14.71 GiB 98.05%