[Python]GoogleDriveの認証情報の使い分け

2021年9月3日金曜日

Python

PythonをからGoogle Driveのファイルをダウンロードする際、いろいろな情報が錯綜し混乱したことはないでしょうか?
本記事では認証情報について整理しながら紹介します。


Google Drive APIの利用登録

Google Driveからファイルをダウンロードする場合、Google Drive APIの利用登録が必要になります。
手順は下記の通りです。

  1. Google Developers Consoleにてプロジェクトを作成
  2. ダッシュボードで「APIとサービスの有効化」を選択
    検索に「Google Drive API」と入力して、選択後有効化
  3. OAuthクライアントIDまたは、サービスアカウントキーで認証情報を作成

OAuthクライアントIDによる認証情報の作成はこちら
サービスアカウントキーによる認証情報の作成はこちらをご参照ください

この時作成する認証情報には2つのパターンがあることが分かります
1つはOAuthクライアントID、もう一つはサービスアカウントキーです。

OAuthクライアントID、サービスアカウントキーの違い

この2つの認証情報の違いを見ていきます。
最も大きく異なるのは、それぞれの認証情報を持つアプリケーションのユーザーが異なる点です。

OAuthクライアントIDは、アプリケーションがGoogle Driveの所有者によって認証されていることを保証します。
サービスアカウントキーは、Google Driveの所有者とは別のサービスアカウントというユーザーに対して
Google Driveにアクセスしても良いという許可を与えている形になります。

つまり、OAuthクライアントIDを持ったアプリは所有者としてアクセスし、
サービスアカウントキーを持ったアプリはサービスアカウントとしてアクセスします

OAuthクライアントID、サービスアカウントキーに振る舞いの違い

システム的にこれらの違いがどのような影響を及ぼすかを見ていきます。

PC上で動作するPythonアプリケーションの場合

恐らく個人の開発で一番多い使用例はOAuthクライアントIDを用いるケースだと思います。
このケースでは、問題無くGoogle Driveへのアクセスが可能です。

対して、サービスアカウントキーの場合は1点注意が必要です。 サービスアカウントがGoogleDriveにアクセスするため、
ダウンロード等は、GoogleDriveからサービスアカウントに対して共有設定している必要があります。

Webアプリケーションの場合

OAuthクライアントIDを用いたGoogleDriveのアクセスは開発段階では非常に厳しくなりました。
Googleのセキュリティ強化により事前に審査に通っていないと下記の通りアクセスが弾かれてしまいます。


審査は下記から行う必要があります。
https://console.cloud.google.com/apis/credentials/consent

対してサービスアカウントの場合は、共有設定されているファイルに対してはアクセスが可能です。

さいごに

認証情報を関連は個人開発でハマりがちなポイントかと思います。
少しでも参考になれば幸いです。

AIエンジニア向けフリーランスならここがおすすめです

まずは無料会員登録

プロフィール

自分の写真
製造業に勤務する傍ら、日々AIの技術動向を調査しブログにアウトプットしています。 AIに関するご相談やお仕事のご依頼はブログのお問い合わせフォームか以下のアドレスまでお気軽にお問い合わせください。 bhupb13511@yahoo.co.jp

カテゴリ

このブログを検索

ブログ アーカイブ

TeDokology