LoginSignup
3
6

More than 5 years have passed since last update.

Google Admin SDK でユーザーを登録する(python)

Last updated at Posted at 2017-05-30

はじめに

GSuite(GoogleApps)を利用してユーザー管理をしていて、大量のデータ投入をする必要がありました。データの読み出しなどの記事はチュートリアルでよく見たのですが、登録に関してあまり記事が無かったので、何かのお役に立てればと記事を書きます。

コードを書く前に必要なこと

プロジェクトの登録

デベロッパーコンソールからプロジェクト適当な名前で作成します。
プロジェクトの登録.png

ダッシュボードに戻って、作成したプロジェクトを選択し、APIを追加します。
APIを有効にする.png

「Admin SDK」を有効にして、認証キーを作成してください。
- OAuthで認証情報を作成
- アプリケーションの種類:「その他」で名前は適当に入れる
AdminSDK1.png

認証キーが作成され、一覧に表示されるので、ダウンロードして適当な場所に保存します。
(コード例では:[自分のホームディレクトリ]/.test_secrets/ 配下に「client_secret_test.jso.json」として保存します)

だいたいこれで動かす準備ができました。

実際のコード

create.rb
# -*- coding: utf-8 -*-

import os
import httplib2
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage

def main():
    try:
        import argparse
        parser = argparse.ArgumentParser(parents=[tools.argparser])
        flags = parser.parse_args()
    except ImportError:
        flags = None

    # 認証情報を格納するディレクトリ「.credentials」の設定。ディレクトリが無い場合は作成
    credential_dir = os.path.join(os.path.expanduser('~'), '.test_credentials')
    if not os.path.exists(credential_dir):
        os.makedirs(credential_dir)

    # 認証ファイルのパスを設定と読み込み
    credential_path = os.path.join(credential_dir, 'admin-directory_v1_test.json')
    store = Storage(credential_path)
    credentials = store.get()

    # 認証ファイルが無い場合は作成
    if not credentials or credentials.invalid:

        # 使用する機能の範囲を設定
        scopes = [
            'https://www.googleapis.com/auth/admin.directory.user',
        ]

        # 認証キーの設定
        secret_dir = os.path.join(os.path.expanduser('~'), '.test_secrets')
        if not os.path.exists(secret_dir):
            os.makedirs(secret_dir)

        # 認証キーから認証処理を行うクラスのインスタンスを生成
        flow = client.flow_from_clientsecrets(
            os.path.join(secret_dir, 'client_secret_test.json'), scopes)

        # アプリケーションの名前
        flow.user_agent = 'User register Test Tool'

        if flags:
                credentials = tools.run_flow(flow, store, flags)
        else: # Python 2.6 互換用処理
            credentials = tools.run(flow, store)
        print('証明書を保存しました: ' + credential_path)

    # 認証を行う
    http = credentials.authorize(httplib2.Http())
    app_admin_service = discovery.build('admin', 'directory_v1', http=http)

    # 作成するユーザー情報を作成
    register_data = {
        'primaryEmail':'test-user@hoge.com',
        'name':{
            'givenName':'太郎',
            'familyName':'山田',
        },
        'suspended':False, # アカウント停止の状態にしない
        'password':'p-a-s-s-w-o-r-d',
    }

    # 登録実行
    results = app_admin_service.users().insert(body=register_data).execute()

    if(int(results['id']) > 0):
        print("googleアカウントを作成完了!")
    else:
        print("googleアカウントを作成に失敗しました")


if __name__ == '__main__':
    main()

プログラムを実行するとブラウザが立ち上がり、アクセス許可を求められますので、OKをクリックして実行します。
許可リスエスト.png

参考

G Suite Admin SDK Directory API

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6