linuxmintでグーグルのドライブを/home/<User>/GoogleDriveへマウントしたい

linuxmintでグーグルのドライブを/home/<User>/GoogleDriveへマウントしたいのですが、 Googleの認証のところがイマイチわかりません。 マウントするアプリ「google-drive-ocamlfuse」はインストール済みです。 OAuth クライアント ID のクライアント ID と クライアントシークレットの取得方法を 教えてください。

ChatGPT:

なるほど、Linux Mintで google-drive-ocamlfuse を使ってGoogle Driveを /home/<User>/GoogleDrive にマウントしたいのですね。
そのためには Google Cloud Console から OAuthクライアントIDとシークレット を取得する必要があります。以下の手順で進めてください。


1. Google Cloud Consoleにログイン

  1. ブラウザで Google Cloud Console にアクセスし、Googleアカウントでログイン。

2. プロジェクトを作成

  1. 上部のプロジェクト選択メニューから「新しいプロジェクト」を作成。
    (名前は「google-drive-ocamlfuse」など分かりやすいものに)

3. Google Drive APIを有効化

  1. 左上のメニューから 「APIとサービス → ライブラリ」 を選択。
  2. 検索窓に「Google Drive API」と入力し、結果から選択。
  3. 「有効にする」をクリック。

4. OAuth同意画面を設定

  1. 左メニューの 「APIとサービス → OAuth同意画面」 を選択。
  2. 「外部」を選んで「作成」。
  3. アプリ名(例:google-drive-ocamlfuse)、サポートメールを入力。
  4. スコープの追加はデフォルトのままでOK。
  5. テストユーザーに自分のGoogleアカウントを追加。
  6. 保存。

5. OAuthクライアントIDを作成

  1. 左メニューの 「APIとサービス → 認証情報」 を選択。
  2. 「認証情報を作成」→「OAuthクライアントID」をクリック。
  3. アプリケーションの種類で「デスクトップアプリ」を選択。
  4. 名前は適当(例:google-drive-ocamlfuse)。
  5. 作成すると クライアントIDクライアントシークレット が表示されるので控える。

6. google-drive-ocamlfuse へ設定

取得したIDとシークレットを登録します。

google-drive-ocamlfuse -headless -id <クライアントID> -secret <クライアントシークレット>

実行すると、URLが表示されるのでブラウザで開き、Googleアカウントでログインして許可を与えます。
最後に表示される認証コードをターミナルに貼り付ければ設定完了です。


7. マウント

認証が通ったら、マウントポイントを作ってマウントします。

mkdir -p ~/GoogleDrive
google-drive-ocamlfuse ~/GoogleDrive

これで /home/<User>/GoogleDrive にGoogle Driveがマウントされます。


👉 補足:
実際には、Google Cloud Consoleでの「OAuth同意画面」の設定がちょっと面倒で、最初は「テストユーザー」に必ず自分のGoogleアカウントを追加するのを忘れがちです。これをやらないと「アクセス権がありません」というエラーになります。


ご質問ですが、
今の環境では「自分でOAuthクライアントを作成」して進めたいですか?
それとも「デフォルトの(google-drive-ocamlfuse作者が用意した)クライアントID」を使う簡易方式がよいですか?
(前者は多少面倒ですが安定、後者はコマンド一発で認証できます)

あなた:

「4. OAuth同意画面を設定」のところで画像のようにエラーになってしまいます。

ChatGPT:

画像のエラーメッセージによると:

OAuth 構成の作成中にエラーが発生しました
アプリの名前が Google の要件を満たしていないため、リクエストを処理できませんでした。

つまり、アプリの名前がGoogleのポリシー要件を満たしていないため、OAuth同意画面の作成が失敗しています。


✅ 解決方法

Googleの要件は以下です:

  • アプリ名に「Google」や「Drive」などGoogleブランド名を含めない
  • 不適切な文字や特殊記号を含めない
  • アプリ名はシンプルで固有のものにする

修正例

  • NG例: google-drive-ocamlfuse
  • OK例: MyGDriveFusePersonalDriveAccessMintGDriveMount

手順

  1. 再度「OAuth同意画面」で アプリ名をGoogleブランドを含まない名前に変更
  2. サポートメールは自分のGmailを選択。
  3. 他はそのままでOK。
  4. 「保存」→「続行」。

✅ 再試行時の注意

Googleのブランド名はポリシー違反になるため、Google、Drive、Gmail、YouTube などは使わないでください。


この修正をして進めれば、OAuthクライアントIDとシークレットが発行できるはずです。


👉 質問:OAuth同意画面は「外部」を選択していますか?
(個人利用なら「外部」+テストユーザー追加が必須です)
それとも「内部」で試していますか?

あなた:

アプリ名は例題の通り「3.アプリ名(例:google-drive-ocamlfuse)、サポートメールを入力。」 サポートメールはいつも使っているGmailです。

ChatGPT:

なるほど、その場合は アプリ名に google-drive-ocamlfuse を使ったことが原因 です。
Googleはブランド保護のため、アプリ名に「Google」「Drive」などGoogle商標を含めることを禁止しています。


✅ 修正ポイント

  • 「アプリ名」を、Googleのブランドを含まない任意の名前に変更してください。
  • 例:
    • google-drive-ocamlfuse(NG)
    • GDOF-MounterMintCloudMountMyDriveAccess など

✅ 対応手順

  1. **「OAuth同意画面」**に戻る
  2. アプリ名を上記のように修正
  3. サポートメールはそのままでOK(GmailでOK)
  4. 保存 → 次へ

✅ 追加の注意点

  • 「外部」を選択し、テストユーザーに自分のGmailを追加しないと認証で弾かれます。
  • 「公開」設定は不要(テストモードで十分)。
  • 説明やロゴは空欄でもOK。

この修正を行えば、エラーは解消されてOAuthクライアントIDを作成できるはずです。


👉 質問
OAuth同意画面の設定は再度やり直しますか?
それとも Googleのブランド名を含まない簡単な名前で私が推奨例をいくつか出しましょうか?

あなた:

認証コードはどのようにして得られますか?

ChatGPT:

今、認証コードを入力したい段階ということですね。
ここまで来ていれば、OAuthクライアントIDとシークレットの設定は成功しているはずです。


✅ 次の手順

  1. ターミナルで実行したコマンドはおそらく以下のはずです:
google-drive-ocamlfuse -headless -id <クライアントID> -secret <クライアントシークレット>
  1. 実行後に表示されたURLをブラウザで開き、Googleアカウントにログインしてアクセスを許可。
  2. 最後にGoogleが表示した 認証コード をターミナルに貼り付けて Enter。

✅ 完了後にやること

認証コードを入力して Enter すると、認証が完了し、~/.gdfuse/default にトークンが保存されます。

その後、マウントできます:

mkdir -p ~/GoogleDrive
google-drive-ocamlfuse ~/GoogleDrive

👉 質問:
「認証コード」はコピーしてターミナルに貼り付けましたか?
それとも、貼り付けてもエラーになりますか?
(もしエラーなら、そのメッセージを教えてください)

あなた:

「最後にGoogleが表示した 認証コード」はどのタイミングで表示されますか?

ChatGPT:

「認証コード」が表示されるタイミングは、以下の流れの 最後のステップ です。


✅ 認証コードが表示されるタイミング

  1. ターミナルで以下のコマンドを実行: google-drive-ocamlfuse -headless -id <クライアントID> -secret <クライアントシークレット> このとき、ターミナルに URL が表示されます。
  2. そのURLを ブラウザで開く
  3. ブラウザでGoogleアカウントにログインし、
    google-drive-ocamlfuse アプリに対して Google Driveへのアクセスを許可
  4. アクセス許可を与えた後、ブラウザの画面に「認証コード」が表示される
    • これは長い英数字の文字列(例:4/0Ad9sdg...)。
    • コピーしてターミナルに貼り付ける

✅ 重要ポイント

  • 「認証コード」はGoogleの許可ページを閉じる直前に表示されるもので、リダイレクト先のURLではなく、画面に出ているテキストをコピーします。
  • 認証が終わると、ターミナル側は「コードを入力してください」という状態で待っています。

⚠️ もしコードが表示されない場合

  • 認証画面を最後までスクロールして、「許可」ボタンをクリック
  • 許可後に「認証コードをコピーしてアプリに貼り付けてください」という画面が必ず出ます。
  • 出ない場合、ブラウザのポップアップブロックを確認してください。

👉 今の状態はどこまで進んでいますか?

  • ターミナルにURLが表示された?
  • ブラウザで認証許可した?
  • でもコードが見つからない?

必要なら、Google認証画面の最終ステップのスクリーンショットをアップできますか?

あなた:
画像をアップロードしました
ChatGPT:

このスクリーンショットを見ると、今は 認証コードの入力待ち の状態ですね。
ターミナルに表示されているURLをブラウザで開くと、Google認証画面に進みます。


✅ ここからの流れ

  1. ターミナルのURLをコピー https://accounts.google.com/o/oauth2/auth?client_id=541822105438-16s0...approval_prompt=force このURLをブラウザで開きます。
  2. Googleアカウントでログイン
    → 認証画面で「このアプリにGoogle Driveへのアクセスを許可しますか?」と聞かれるので 「許可」 をクリック。
  3. 許可後、「認証コード」が表示されます
    • 長い文字列(例:4/0Ad9sdgfhjkl...
    • ページの中央に表示されるのでコピーしてください。
  4. そのコードを、ターミナルの Please enter the verification code: の後に貼り付けて Enter。

✅ 注意点

  • もし前回エラーになったのは「Malformed auth code」なので、コードを入力しなかったことが原因です。
  • 認証コードを入力する前にブラウザを閉じないでください。
  • コードは一度きり有効なので、失敗した場合はもう一度URLを開いて認証からやり直します。

👉 今、ブラウザでURLを開きましたか?
もし開いても認証コードが見つからない場合、その画面のスクリーンショットを送ってください。

あなた:

「GDOF-Mounter が Google アカウントへのアクセスをリクエストしています」 の部分で「許可」ボタンをクリックすると、 「127.0.0.1 で接続が拒否されました。」 になってしまいました。 Linux Mintのセキュリティに引っかかていると思います。

ChatGPT:

これは正常な挙動です。google-drive-ocamlfuseheadlessモードで動かしているので、ローカルでリダイレクトを処理しないため、127.0.0.1で接続が拒否されました が表示されます。


✅ なぜこうなる?

  • デスクトップアプリのOAuth認証では、通常ローカルホストでリダイレクトを受けます。
  • しかし、-headless オプションを使うと、ブラウザがリダイレクトできない場合でも、ページ上に「認証コード」を表示するモードになります。
  • そのため、127.0.0.1で接続が拒否されました の画面が出ても問題ありません。
    このページをよく見ると、「認証コード」がテキストで表示されているはずです。

✅ 確認する場所

  • 「127.0.0.1 で接続が拒否されました」の画面を少し下にスクロール
  • もしくは、「このコードをコピーしてアプリに貼り付けてください」という文言と、長い文字列があります。

コード例:

4/0AfJohXAAAAABBBBBCCCCCDDDDD

✅ やること

  1. その長い認証コードをコピー。
  2. ターミナルに戻って、 Please enter the verification code: の後にペーストして Enter。

👉 質問
その「接続拒否」のページでスクロールしましたか?
必要なら、そのページのスクリーンショットをアップしてください(URLは見せなくてOK)。

あなた:

「127.0.0.1 で接続が拒否されました」の画面はスクロール出来ません。 画像で表示されている部分だけです。

ChatGPT:

ありがとうございます。スクロールできないということは、ブラウザがリダイレクトURLに直接アクセスしてしまって、コードを表示する画面に戻れないケースですね。

google-drive-ocamlfuse -headless は本来、「認証成功後のページにコードを表示する」挙動ですが、今回の挙動ではリダイレクトの際に自動で 127.0.0.1 に飛んでしまい、コードが見られない状態になっています。


✅ 対策(コードを取得する方法)

  1. 「接続拒否」ページのURLバーにあるURLを確認
    • 例: http://127.0.0.1:8080/?code=4/0AfJohXAAAAABBBBBCCCCCDDDDD&scope=https://www.googleapis.com/auth/drive
    • code= の後ろに認証コードがあります。
    • & の前までがコードです。
  2. URLが見えない場合は、ブラウザで「ページの情報」や「アドレスバーをコピー」して確認。
  3. コードをコピーして、ターミナルにペースト。

✅ 代替方法(確実なやり方)

もしアドレスバーのURLが見えない・コピーできない場合、redirect_uri をローカルホストではなく「urn:ietf:wg:oauth:2.0:oob」モードで作り直す方法があります。

やり方

  1. Google Cloud Consoleで、OAuthクライアントIDの承認済みリダイレクトURIに以下を追加: urn:ietf:wg:oauth:2.0:oob
  2. その後、認証URLにアクセスすると、接続拒否ではなく、ブラウザに直接コードが表示される

✅ 今すぐできること

まず、アドレスバーを見てください。

  • code= の後ろに文字列がありますか?
  • もしあれば、それをコピーして貼り付ければOK。

👉 質問:URLバーに code= のついた長いURLが表示されていますか?
(スクリーンショットでもOK、ただしコード部分は途中でマスクして)

あなた:

そのページのURLをコピーしました。 「http://127.0.0.1:8080/oauth2callback?code=**************************&scope=https://www.googleapis.com/auth/drive」 「code=」は「**************************」で いいですか?

ChatGPT:

はい、その通りです!
code= の後の

**************************

が認証コードです。


✅ 次の手順

  1. ターミナルに戻って、以下のプロンプトにそのコードを貼り付けて Enter: Please enter the verification code:
  2. 正しく入力できれば、認証トークンが取得され、~/.gdfuse/default に保存されます。
  3. 次にマウント: mkdir -p ~/GoogleDrive google-drive-ocamlfuse ~/GoogleDrive
  4. 正常なら ~/GoogleDrive にGoogle Driveの内容が見えます。

✅ ここで質問:
認証コードを入力して Enter したら、エラーは出ませんでしたか?
もしOKなら、すぐにマウントできるはずです。
(エラーが出たら、そのメッセージを教えてください)

あなた:

ありがとうございました。 無事マウントすることができました。

ChatGPT:

よかった!うまくいって安心しました。🎉


✅ 今後のヒント

  • 起動時に自動マウントしたい場合: google-drive-ocamlfuse ~/GoogleDrive~/.profile または ~/.config/autostart スクリプトに追加。
  • マウント解除は: fusermount -u ~/GoogleDrive
  • もし複数アカウントを使いたい場合は: google-drive-ocamlfuse -label work ~/GoogleDriveWork~/.gdfuse/work に認証情報が保存されます)

次に進めたいことはありますか?

  • 自動マウント設定
  • 読み書きのパフォーマンス改善
  • 共有フォルダの扱い
  • それとも Google Drive以外のクラウド連携