Google > AppEngine > Python > ログイン認証

情報は溢れているが、イメージが掴めないと作業に手間取るから、忘備録。

  • 使う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