[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技術を中心にソースコード付きでご紹介します


Twitter

カテゴリ

このブログを検索

ブログ アーカイブ

TeDokology