Google Authを使ってGoogle APIsの認証をとおしてみた

Google Cloud
この記事は約4分で読めます。

こんにちは!大嶋です!
Google APIsを使うための認証に、PythonライブラリのOAuth 2.0を使っている方もいらっしゃるのではないでしょうか。しかしそのOAuth 2.0も非推奨となってしまいました。
今回はGoogle APIsの使用にあたり推奨されている認証方法を紹介したいと思います。

本記事でわかること

  • 推奨されているgoogle_auth_oauthlibの認証方法と認証例
  • google_auth_oauthlibを使ったGoogle Groupの作成

推奨されているgoogle_auth_oauthlibの認証方法と認証例

認証方法

Google APIsを使った認証にgoogle_auth_oauthlibが推奨されるようになりました。
元々はPythonライブラリのOAuth 2.0を多くの方が利用していたと思うので、google_auth_oauthlibに変更が必要になりますね。

認証例

google_auth_oauthlib.flowモジュールを参考に認証を通すことができます。

google_auth_oauthlibを使ったGoogle Groupの作成

それでは実際にgoogle_auth_oauthlibを使って認証を通しています。
今回はGoogle Groupを作成するためのAdmin SDK APIをスコープとして、上記例をもとに作成しています。

from google_auth_oauthlib.flow import Flow
import pprint
import requests
import googleapiclient.discovery

flow = Flow.from_client_secrets_file(
    #Google CloudのOAuth 2.0 クライアントIDから取得しています
    #https://console.cloud.google.com/apis/credentials?project=
    #またOAuth同意画面にて公開範囲を設定する必要があります
    #https://console.cloud.google.com/apis/credentials/consent?project=
    'XXX.apps.googleusercontent.com.json', 
    scopes=[
        'https://www.googleapis.com/auth/admin.directory.group', #Google Groupを作成するためのスコープ
        ],
    redirect_uri='urn:ietf:wg:oauth:2.0:oob')

# 認証取得
auth_url, _ = flow.authorization_url(prompt='consent')

print('Please go to this URL: {}'.format(auth_url))

# 認証コードの取得
code = input('Enter the authorization code: ')
flow.fetch_token(code=code)

# アクセストークンを取得した後のセッションを使用する
session = flow.authorized_session()

# 新しいグループの情報を設定
group_info = {
   "email": "グループのメールアドレス", #グループのメールアドレスを記載
   "name": "グループ名", #グループ名を記載
   "description": "説明", #グループの説明を記載
}

# 新しいグループを作成
create_group_url = 'https://admin.googleapis.com/admin/directory/v1/groups'
response = session.post(create_group_url, json=group_info)

まとめ

非推奨となっていたOAuth 2.0の代わりに、google_auth_oauthlibを使ってGoogle APIsを認証してみました。今回はグループを作成しましたが、この認証方法で他のGoogle APIsの利用にも応用できるので、どんどん使っていきたいですね。

おわり。

Google および Google Cloud Platform™ service は Google LLC の商標であり、この記事は Google によって承認されたり、Google と提携したりするものではありません。

コメント

タイトルとURLをコピーしました