はじめに
GoogleAPIを使う機会があり、他サービスのAPIとは違う印象を受けたので、利用までの手順をまとめてみました。 参考になればと思います。
OAuth2.0とは
他サービスのAPIと最も違う点が、OAuth2.0だと思います。
APIを利用してユーザーデータを参照する場合、クライアントがデータを参照する権限を持っているかを調べる必要があります。
そうしないと誰でも参照できてしまい、安全ではありません。
なので、あらかじめアクセストークンという許可されていることを示すものをクライアントに渡しておきます。 このアクセストークンの要求と払い出しの部分を標準化したものをOAuth2.0と言います。
OAuthについてイラストなどで分かりやすく解説してあるので調べてみてください。
手順
プロジェクトの作成
GoogleではプロジェクトごとにAPIを設定していきます。
特権管理者でG suiteにログインしてプロジェクト管理ページにアクセスします。
https://console.developers.google.com/project
「プロジェクトを作成」にてプロジェクトを作成してください。
必要なAPIを有効化
作成したプロジェクトが選択されていることを確認して、左のメニューから「ライブラリ」を選択してください。 今回はAdmin SDK APIを有効にします。
カレンダーを操作したい場合は、Google Calendar APIを、Gmailを操作したい場合は、Gmail APIを有効化します。
OAuth 同意画面の設定
次に左のメニューから「OAuth 同意画面」を選択してください。
必須項目の「アプリ名」、「ユーザー サポートメール」、「デベロッパーの連絡先情報」を入力してください。
次にスコープを登録します。 スコープとは、ユーザーに許可を求める権限を表します。 必要なスコープにチェックを入れて「更新」を押します。 今回は、ユーザーの表示と管理のスコープを付けています。
認証情報の設定
左のメニューから「認証情報」を選択してください。 「認証情報を作成」から、「OAuthクライアントID」を選択してください。
「作成」を押すと「クライアントID」と「クライアントシークレット」が作成されます。 ダウンロードボタンを押して認証情報が書かれたファイルをダウンロードしてください。 「credentials.json」に名前を変更してください。
これで準備が整いました。 いよいよ、APIを叩いていきます。
API実行
Admin SDKクイックスタートのPythonサンプルを実行していきます。
Python Quickstart | Directory API | Google Developers
ライブラリのインストール
$ pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
コード
quickstart.pyを作成して、下記のコードを書き込んでください。
from __future__ import print_function import pickle import os.path from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request SCOPES = ['https://www.googleapis.com/auth/admin.directory.user'] def main(): """ドメイン内の最初の10人のユーザーのメールアドレスと名前を出力する。 """ creds = None if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server(port=0) with open('token.pickle', 'wb') as token: pickle.dump(creds, token) service = build('admin', 'directory_v1', credentials=creds) print('Getting the first 10 users in the domain') results = service.users().list(customer='my_customer', maxResults=10, orderBy='email').execute() users = results.get('users', []) if not users: print('No users in the domain.') else: print('Users:') for user in users: print(u'{0} ({1})'.format(user['primaryEmail'], user['name']['fullName'])) if __name__ == '__main__': main()
実行する
この時、注意点として、認証情報の設定でダウンロードしたcredentials.jsonをquickstart.pyと同じディレクトリに置いておいてください。
$ python quickstart.py Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth.............................
URLを開いて認証を許可すると登録されているユーザーの情報が出力されます。
2回目からは認証を求められずに結果が表示されます。
$ python quickstart.py Getting the first 10 users in the domain Users: メールアドレス (名前) ・ ・ ・
以上がOAuth2.0の有効化とAPIを叩くまでの手順となります。
まとめ
GoogleAPIを触ってみて、初めて認証の仕組みを意識しました。 普段何気なく使っていますが、私たちの大切なデータはこのように守られていることを知る良いきっかけになりました。
ご覧いただきありがとうございました。