google drive の Quickstart(クライアントID編)
ガイド
https://developers.google.com/drive/api/v3/quickstart/python?hl=ja
実行確認環境
win10
python3.7.1
基本的にはステップの通りに進めば実行まではできる
1 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(ファイル名変えたらなそのファイル名で)
これが出たら下の小さい「詳細」をクリック
すると画面に
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
サービスアカウントで動かしたいときはちょっとサンプルをいじる必要があるのでまた次回。