はじめに
- コードはドキュメント通りだが、認証に1日かかったためメモ
- 本記事ではユーザ認証を使用する
- バッチ処理などで使用するためにはサービスアカウントを使用する
- キャプチャはないが、参考リンクは大目に貼っているので、解決しない場合でもリンクは見てみることを推奨
前提
- ブラウザ上でファイルの取得は可能であることを確認
- privateのファイル
- 認証あり。インターネットに大公開しているファイルではない
- 認証関連の設定が終わった後のコードは↓の通り
- GCPへのアクセスが可能であること
- プロジェクトは作成済み
- gcloudコマンドを使用可能であること
手順
- Google Driv APIを有効にする
- 認証情報を作成
- https://console.cloud.google.com/apis/credentials
- 「+認証情報を作成」 → 「OAuthクライアントID」
- 初回はOAuth同意画面を設定する必要がある(projectも?)
- 認証画面で表示されるので自分だけが使うなら適当に設定。
- デスクトップアプリを選択
- 特に入力に悩むことはないと思われる
- 認証情報(JSON)をダウンロードし、適切な場所に配置
- 認証情報登録時の最後にダウンロードされる
- 認証情報の「OAuth 2.0 クライアントID」
- 下記のコマンドでデフォルト認証情報を設定
gcloud auth application-default login --scopes "https://www.googleapis.com/auth/drive" --client-id-file "認証情報.json"
- https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login
memo
gcloud auth application-default login
で作成される認証情報の格納PATH
参考
- LocalでApplication Default Credentialsを利用している時にG Suite APIやFirebase APIを実行するとgoogleapi: Error 403: Request had insufficient authentication scopes. になる
- OAuth 2.0 Scopes for Google APIs
- google.auth package
- Pythonライブラリの認証で使用するgoogle.auth.defaultのドキュメント
- 認証情報をどういう優先順位で取得するかは重要
- 今回はApplication Default Credentials(ADC)を使用するので2
- https://google-auth.readthedocs.io/en/latest/reference/google.auth.html
- Download files | Drive API | Google Developers
- 認証した後にファイルダウンロードする場合のコード
- https://developers.google.com/drive/api/guides/manage-downloads#python
- pythonからGoogleDriveAPIを叩く
- Application Default Credentials
- 認証の本質のドキュメントと思われる
- https://google.aip.dev/auth/4110
- Create access credentials
- 認証の公式ドキュメント。種類別に網羅。
- https://developers.google.com/workspace/guides/create-credentials
- Python Quickstart | Drive API | Google Developers'
- Drive APIをPythonで呼び出すドキュメント
- https://developers.google.com/drive/api/quickstart/python
- Python: download files from google drive using url