今回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を作成

  1. プロジェクト作成: Google Cloud Platformにログインし、新規プロジェクトを作成する。
  2. APIの有効化: 「APIとサービス」から「Google Drive API」を検索し、有効化する。
  3. OAuth同意画面の設定:
    • User Typeを「外部」に設定する。
    • アプリ名、ユーザーサポートメールなどを入力する。
  4. 認証情報の作成:
    • 「認証情報を作成」から「OAuthクライアントID」を選択する。
    • アプリケーションの種類を「デスクトップアプリ」に設定して作成する。
    • 表示された「クライアントID」と「クライアントシークレット」を控える。

手順2:作成したクライアントIDでrcloneを設定

  1. `rclone config` を再度実行し、新しいリモート接続の作成を開始する。
  2. `client_id`と`client_secret`を尋ねられた際、手順1で控えた自身の値を入力して認証を進める。

状況4:Googleによるアプリ未審査エラー

  • 問題: 自作のクライアントIDで認証を進めると、「このアプリは現在テスト中で、承認されたテスターのみがアクセスできます」というエラーがGoogleから表示される。
  • 原因: 作成したOAuthクライアントIDが「テストモード」のため、許可されたテストユーザー以外からのアクセスがブロックされている。

手順3:テストユーザーに自身のアカウントを追加(最終解決策)

  1. 再度、Google Cloud Platformの「OAuth同意画面」を開く。
  2. 「テストユーザー」の項目で「+ ADD USERS」をクリックし、rcloneで認証したい自身のGoogleアカウントのメールアドレスを追加する。

上記設定後、rcloneの認証プロセスを再実行することで、認証が正常に完了した。