2023
06.02
06.02
Google認証のテスト
Uncategorized, ソフトウェア・アプリケーション
今更だが、以前、ある要件でGoogle認証得られる情報が知りたくて実施したのを記事として残しておく。ちなみに今日は2023年6月2日である。こう言う技術は直ぐに陳腐化するので注意してね。
やったのは、Pythonで簡単なGoogle認証のスクリプトを書いて何が返ってくるのかをテスト。そのまま使うと僕のサイトに情報来るからやめてねw
[Python] -> [Google認証] -> [リダイレクト先(認証トークンを取得)]
と言う流れだ。
Pythonのスクリプトはこんな感じ
import webbrowser
from googleapiclient.discovery import build
from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage
# クライアントIDとシークレットを読み込む
CLIENT_SECRETS_FILE = "client_secrets.json"
flow = flow_from_clientsecrets(
CLIENT_SECRETS_FILE,
scope="https://www.googleapis.com/auth/userinfo.email",
# 以下のコンテンツでトークンを返すロジックが必要
redirect_uri="http://45.32.35.200/",
)
# 認証を行う
flow.params["access_type"] = "offline"
flow.params["approval_prompt"] = "force"
auth_uri = flow.step1_get_authorize_url()
print(auth_uri)
# ブラウザでよく見る認証 URI を開く
webbrowser.open(auth_uri)
# ユーザーが認証を許可した後、リダイレクトURIのクエリパラメータから認証コードを取得するつもり
code = input("Enter the authentication code: ")
# アクセストークンを取得
credential = flow.step2_exchange(code)
# アクセストークンをファイルに保存する
storage = Storage("token.json")
storage.put(credential)
# Google APIにアクセスする
credential = storage.get()
service = build("oauth2", "v2", credentials=credential)
user_info = service.userinfo().get().execute()
print(user_info)
こいつを実行すると以下のような、よく見る認証画面人なります。
アカウントを選択して承認すれば、Python側がリダイレクトします。リダイレクト先には、トークンの内容が届くので分解して保存ナリすれば良いと思います。以下、見えにくいですが、以下のように返ってきます。
それをJson形式で保存した物が異なもののです。これら情報が返されるので人物特定をGoogle認証を経て可能となります。
まあ、使えそうなのは、真ん中あたりのメールアドレスですね。結局、メールアドレスだけは何処にセキュリティ管理を任せても管理の対象にするしかない、と。
{"access_token": "ya29.a0AWY7Cknw4Id3osSJbqagaX9RLgt3_PNtUoyMYO2gp0Mq0aZRk0MY-ZA-syQw0163",
"client_id": "264012985985-lr58at8is68t91asmc37go139k8fgivq.apps.googleusercontent.com",
"client_secret": "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",
"refresh_token": "1//0e7-6lLUhqqZwVM9Gqz_1fFN7VZy9FjUU",
"token_expiry": "2023-06-02T09:50:39Z",
"token_uri": "https://oauth2.googleapis.com/token",
"user_agent": null,
"revoke_uri": "https://oauth2.googleapis.com/revoke",
"id_token": {
"iss": "https://accounts.google.com",
"azp": "264012985985-lr58at8is68t91asmc37go139k8fgivq.apps.googleusercontent.com",
"aud": "264012985985-lr58at8is68t91asmc37go139k8fgivq.apps.googleusercontent.com",
"sub": "116839221698152597702",
"hd": "xxx.com",
"email": "rinmon@xxx.com",
"email_verified": true,
"at_hash": "j6NyfeSzdWeqSM8GdrP2RQ",
"iat": 1685695840,
"exp": 1685699440
},
"id_token_jwt": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjYwODNkZDU5eJo3oENRg2PNwMwRJEeRf6sQ",
"token_response": {
"access_token": "ya29.a0YLAtum4lnBDFQYectP2uT1k0MY-ZA-syQw0163",
"expires_in": 3599,
"refresh_token": "1//0e71fFN7VZy9FjUU",
"scope": "openid https://www.googleapis.com/auth/userinfo.email",
"token_type": "Bearer",
"id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjO-0NaEItgcWF7tg_oDceJo3oENRg2PNwMwRJEeRf6sQ"
},
"scopes": ["https://www.googleapis.com/auth/userinfo.email"],
"token_info_uri": "https://oauth2.googleapis.com/tokeninfo",
"invalid": false,
"_class": "OAuth2Credentials",
"_module": "oauth2client.client"
}
以上、超簡単に書いて、メモとして残しておきます。
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。