今回rcloneの設定で発生した問題と、その解決に至るまでの手順は以下の通りです。
状況1:ポート使用中エラー (address already in use)
- 問題: `rclone config` 実行時、認証用ポートが他のプロセスで使用中のため起動できない。
- 対処: `rclone authorize` コマンドを直接実行し、手動認証を試みたが、次の問題が発生した。
状況2:リダイレクトURI不一致エラー (redirect_uri_mismatch)
- 問題: `rclone authorize` で表示されたURLにアクセスすると、Googleからエラー `400: redirect_uri_mismatch` が返される。これは、rcloneが要求するリダイレクト先URLがGoogle Cloudプロジェクトに登録されていないことが原因。
- 対処: `rclone config` の対話モードで、自動設定(`Use auto config?`)を「No (n)」にし、手動認証を試みた。
状況3:ヘッドレス環境としての誤認識
- 問題: 手動設定を選択してもGoogleの認証URLが表示されず、「ブラウザのあるマシンで `rclone authorize` を実行してください」というサーバー環境向けの指示が表示される。rcloneが実行環境を誤認識していることが原因。
- 根本原因の推定: rcloneに標準で組み込まれているクライアントIDが、Googleのセキュリティポリシー変更などにより正常に機能しなくなっている可能性が高い。
根本的解決策:専用のOAuthクライアントIDの作成と利用
手順1:Google Cloud PlatformでOAuthクライアントIDを作成
- プロジェクト作成: Google Cloud Platformにログインし、新規プロジェクトを作成する。
- APIの有効化: 「APIとサービス」から「Google Drive API」を検索し、有効化する。
- OAuth同意画面の設定:
- User Typeを「外部」に設定する。
- アプリ名、ユーザーサポートメールなどを入力する。
- 認証情報の作成:
- 「認証情報を作成」から「OAuthクライアントID」を選択する。
- アプリケーションの種類を「デスクトップアプリ」に設定して作成する。
- 表示された「クライアントID」と「クライアントシークレット」を控える。
手順2:作成したクライアントIDでrcloneを設定
- `rclone config` を再度実行し、新しいリモート接続の作成を開始する。
- `client_id`と`client_secret`を尋ねられた際、手順1で控えた自身の値を入力して認証を進める。
状況4:Googleによるアプリ未審査エラー
- 問題: 自作のクライアントIDで認証を進めると、「このアプリは現在テスト中で、承認されたテスターのみがアクセスできます」というエラーがGoogleから表示される。
- 原因: 作成したOAuthクライアントIDが「テストモード」のため、許可されたテストユーザー以外からのアクセスがブロックされている。
手順3:テストユーザーに自身のアカウントを追加(最終解決策)
- 再度、Google Cloud Platformの「OAuth同意画面」を開く。
- 「テストユーザー」の項目で「+ ADD USERS」をクリックし、rcloneで認証したい自身のGoogleアカウントのメールアドレスを追加する。
上記設定後、rcloneの認証プロセスを再実行することで、認証が正常に完了した。