Linuxサーバ上のファイルをGoogleDriveにバックアップしたく、以下のサンプルコードを元に実装してみた。
https://github.com/google/google-api-java-client-samples/tree/master/drive-cmdline-sample
しかし、GoogleAPIの認証時にブラウザが必要になるため、サーバ上では実行できない。
色々調べてみると、一度リフレッシュトークンを取得すればそれを使ってアクセストークンを生成できる、とのことだが、サンプルコードで使われているクラスにリフレッシュトークンをセットするようなメソッドが見つからなかった。
代わりに、一度GUI環境で認証情報を作成し、それをサーバに転送して使われるようにすれば問題なく動作することがわかった。
上記のサンプルコードだと、認証情報を保存するパスは以下のフィールドで定義されている。
/** Directory to store user credentials. */
private static final java.io.File DATA_STORE_DIR =
new java.io.File(System.getProperty("user.home"), ".store/drive_sample");
一度認証すると、上記ディレクトリ内にStoredCredentialというファイルが生成される。
これをGoogleDriveAPIを実行したいマシンに持って行き、/home/hoge/.store/drive_sample/StoredCredential
においてやればGoogleAPIを実行できる。