Google API で遊ぶ

pythonでGoogle API を使ってみる

google drive の Quickstart(クライアントID編)

ガイド

https://developers.google.com/drive/api/v3/quickstart/python?hl=ja

実行確認環境

win10

python3.7.1

基本的にはステップの通りに進めば実行まではできる

 

1 credentials.jsonの取得

enable_the_drive_api

ENABLE THE DRIVE APIをクリック

download_client_configuration

DOWNLOAD CLIENT CONFIGURATIONをクリックするとcredentials.jsonがダウンロードされる

のちに使うAPIを追加したりサービスIDを作ったりしたくなったらAPI Consoleを使うことになるので右下のAPI Consoleに行ってみてもよい(いかなくてもとりあえずは動くはず)

consoleのurl:https://console.developers.google.com/

DONEで閉じる

 

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

Step 2に書かれているコマンドをそのまま実行すればOK

 

3 サンプルコードと1でダウンロードしたcredentials.jsonを同じフォルダに保存

同じフォルダにしたくない場合は下記のtoken.pickleとcredentials.jsonのファイルパスをフォルダまで指定する形にすればOK

    if os.path.exists('token.pickle'):
       
with open('token.pickle', 'rb') as token:

...中略...

        else:
            flow
= InstalledAppFlow.from_client_secrets_file(
               
'credentials.json', SCOPES)
            creds
= flow.run_local_server(port=0)
       
# Save the credentials for the next run
       
with open('token.pickle', 'wb') as token:

蛇足:windowsの時は区切りが\なのでr'hoge\hoge'みたいに書くと楽

 

4 実行

Step 4に書かれてるコマンドをそのまま実行すればOK(ファイル名変えたらなそのファイル名で)

このアプリは確認されていません

gsuiteのアカウントなら出ないかも

これが出たら下の小さい「詳細」をクリック

(安全ではないページ)に移動

「QuickStart(安全ではないページ)に移動」をクリック

権限の付与

許可をクリック

選択内容を確認してください

許可をクリック

すると画面に

The authentication flow has completed, you may close this window

と出るので閉じてコマンドプロンプトにもどると結果が表示されている。

 

蛇足:QuickStartはStep 1で「ENABLE THE DRIVE API」をクリックしたときにgoogleさんが勝手に作ってくれたプロジェクトのアプリケーションの名前。Consoleで変更可能。ちなみにプロジェクト名もQuickStartになっている。自分で新しくプロジェクトを作ることも可能。

 

補足

  • tokenは1回発行されればもう認証は不要で使い続けられる。
  • なので、認証画面が出せない端末で動かしたかったら一度認証画面が出る端末で許可してtoken.pickleを作って、credentials.jsonとtoken.pickleをコピーすれば使える(tokenは大切に保管しましょう)。
  • スコープの変更や使うAPIを追加(変更)した場合はtokenの作り直しが必要で、古いtoken.pickleが残ったまま実行すると前のスコープのままになって増やしたはずのスコープは403エラーが出る。古いtokenを削除して認証をし直す。
  • 一番強いスコープはhttps://www.googleapis.com/auth/drive
  • どのAPIでもそのAPI名の後ろに.hogehogeがないものが全権を持っているスコープの模様。
  • 「このアプリは確認されていません」の表示を消すのはめんどくさそうなので必要に迫られたらちゃんと調べる(参考:https://www.eripyon.com/mt/2017/11/this_app_is_not_verified.html
  • Quickstartのサンプルコードはサービスアカウントだと動かない。

driveのスコープの種類:https://developers.google.com/drive/api/v3/about-auth?hl=ja

 

サービスアカウントで動かしたいときはちょっとサンプルをいじる必要があるのでまた次回。