PythonをからGoogle Driveのファイルをダウンロードする際、いろいろな情報が錯綜し混乱したことはないでしょうか?
本記事では認証情報について整理しながら紹介します。
Google Drive APIの利用登録
Google Driveからファイルをダウンロードする場合、Google Drive APIの利用登録が必要になります。
手順は下記の通りです。
- Google Developers Consoleにてプロジェクトを作成
-
ダッシュボードで「APIとサービスの有効化」を選択
検索に「Google Drive API」と入力して、選択後有効化 - 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
対してサービスアカウントの場合は、共有設定されているファイルに対してはアクセスが可能です。
さいごに
認証情報を関連は個人開発でハマりがちなポイントかと思います。
少しでも参考になれば幸いです。
0 件のコメント :
コメントを投稿