@Satoh_D no blog

大分にUターンしたので記念に。調べたこととか作ったこととか食べたこととか

【Python】PyDriveを使ってGoogle Driveを操作する(認証編)

1. 前提

  • Python: 3.8.5
  • PyDrive: 1.3.1

2. 実施内容

2-1. GoogleDriveのOAuth2.0クライアントIDを作成する

  1. Google Developers Console を開きプロジェクトを作成する
  2. 作成したプロジェクトを開き、左側メニュー「有効なAPIとサービス」をクリックする
  3. APIとサービス画面上部の「APIとサービスの有効化」をクリックし「Google Drive API」を有効化する
  4. 左側メニュー「認証情報」をクリックする
  5. 認証情報画面上部の「認証情報を作成」をクリックし、「OAuthクライアントID」をクリックする
  6. アプリケーションの種類を「デスクトップアプリ」、名前に「任意のテキスト」を入力し「作成」をクリックする

    OAuthクライアントID作成画面のスクリーンショット

  7. 作成された「クライアントID」と「クライアントシークレット」を保存しておく

    OAuthクライアントID作成完了画面のスクリーンショット

あとはコードを書くのみ。

2-2. ライブラリのインストール

pip を使用して PyDrive をインストールする

$ pip install pydrive

qiita.com

2-3. PyDriveの設定ファイルを作成する

PyDrive を使うための認証情報の設定ファイル( settings.yaml )を作成する

client_idclient_secret の欄には前述で保存しておいた「クライアントID」「クライアントシークレット」を入力しておく

アクセストークンなどの認証情報を保管する credentials.json は一旦空のファイルで作っておく

client_config_backend: settings
client_config:
  client_id: XXXXXXXXXXXXXXXX.apps.googleusercontent.com
  client_secret: ZZZZZZZZZZZZZZZZZZ

save_credentials: True
save_credentials_backend: file
save_credentials_file: credentials.json

get_refresh_token: True

2-4. プログラムから認証を実施する

以下のようにソースコードを書く

GoogleAuth()settings.yaml から認証情報を取得し、 CommandLineAuth で認証を行う CommandLineAuth() では一度認証を行えば credentials.json にアクセストークンが保管され次回以降のプログラムの実施に使用される。

GoogleDrive(auth) で取得した認証情報を元にGoogleDriveを操作する準備を行う

# gauth.py
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

auth = GoogleAuth()
auth.CommandLineAuth()

drive = GoogleDrive(auth)

2-5. プログラムを実行し認証を行う

ここまでで一旦プログラムを実行し認証できるか試してみる。

正常に動作するとコマンドライン上に認証URLが表示されるのでアクセスし認証コードを取得、コマンドラインに貼り付けて認証を完了させる

$ python gauth.py

Go to the following link in your browser:

    https://accounts.google.com/o/oauth2/auth?client_id=........

Enter verification code: XXXXXXXX
Authentication successful.

認証コードの取得画面のスクリーンショット抜粋

とりあえず今回はここまで。 また進捗があったら追記予定。

Ex. 参考サイト

qiita.com