情報は溢れているが、イメージが掴めないと作業に手間取るから、忘備録。
- 使うAPIを決めて
- Google Cloud Console 上で ON にして、認証をもらう
- client_secret.jsonファイルが貰える
ここからOATHでの認証手順
client_secret.json
なんか、このファイルが無いと動かないような気にさせるが、jsonファイルなので中身は見れて、「ウェブ アプリケーション のクライアント ID」にある情報が書き込まれているだけ。あれば楽。
別で一つ一つ設定しても動く。
パターン
とりあえず
サービス(service)
APIサービスを操るserviceをもらう際に、credentialsが必要(プライベートなデータにセル属する際は。)google calendar なら
from googleapiclient import discovery
service = discovery.build('calendar', 'v3', credentials=creds)
Credentials
アクセストークンから作ろう、の場合
from oauth2client import client
service = client.AccessTokenCredentials(access_token, user_agent)
code と access_token を交換する
認証の一連の流れに Flow オブジェクトを使うと、
- 認証画面のurl表示 : flow.authorization_url
- コードとトークンの交換 : flow.fetch_token
を利用できる。
from google_auth_oauthlib.flow import Flow
### appflow は Flowオブジェクトです。###
# Tell the user to go to the authorization URL.
auth_url, _ = appflow.authorization_url(prompt='consent')
# auth_url に移動して、認証を受ける。
# print('Please go to this URL:' + auth_url)
# The user will get an authorization code. This code is used to get the
# access token.
code = input('Enter the authorization code: ')
appflow.fetch_token(code=code)
Flowオブジェクトを利用する
利用するに当たり、APIを有効にして、認証コードを受けておく必要がある。
Flowオブジェクトを初期化する際に、from_json_secret_fileを使って、先程の client_secret 利用した処理ができる。
from google_auth_oauthlib.flow import Flow
appflow = Flow.from_client_secrets_file(
'path/to/client_secrets.json',
scopes=['profile', 'email'],
redirect_uri='urn:ietf:wg:oauth:2.0:oob')
最終更新:2020年02月16日 19:25