Google Service Accountを使用したユーザー一覧取得 - [PHP]
はじめに
Googleのサービスアカウントを使用してGoogle Apps使用ユーザーの一覧を取得する必要があり調べてもちょっと情報が古かったので備忘録
環境
- PHP
googleがphp向けにだしてるAPIクライアント使用 - このverが2.0になったので2.0を使用
https://github.com/google/google-api-php-client
前準備1
Google Developers Consoleからサービスアカウントの作成。
https://console.developers.google.com
作成した「API Project-xxxxxxxxxxxx.jso」を「private_key.jsonへリネーム」
前準備2
Google AppsのAdmin consoleからサービスアカウントへ権限を付与する。
http://admin.google.com/
- セキュリティを選択
- もっと見る > 詳細設定 > API クライアント アクセスを管理するを選択
- 前準備1でメモっておいたクライアントIDをクライアント名へ記載、APIの範囲に必要なスコープをカンマ区切りで記載し承認。今回はとりあえず下記を追加詳しくは→https://developers.google.com/admin-sdk/directory/v1/guides/authorizing
4. セキュリティに戻ってAPIリファレンスのAPI アクセスを有効にするにチェックを入れて保存
ここまでで使用準備完了!
Composer使用
composer init
---省略---
composer require google/apiclient
private_keyを作成したディレクトリへ移動
user取得
<?php
require_once 'vendor/autoload.php';
// 証明書情報のセット
putenv('GOOGLE_APPLICATION_CREDENTIALS=private_key.json');
$client = new Google_Client();
// サービス名の設定:多分なんでもいい
$client->setApplicationName("hogehoge-service");
// デフォルト証明書使用(GOOGLE_APPLICATION_CREDENTIALS)セットしたい場合はsetAuthConfigで証明書パスを指定
$client->useApplicationDefaultCredentials();
// 使用するスコープを指定
$client->setScopes([Google_Service_Directory::ADMIN_DIRECTORY_USER_READONLY]);
// 権限を持ったユーザーのメールアドレス指定
$client->setSubject('[email protected]');
// サービスAPI名指定
$service = new Google_Service_Directory($client);
// 取得する際のオプション指定
$options = ['domain' => 'xxxxxxxx.co.jp','maxResults' => 500,'orderBy' => 'email'];
$results = $service->users->listUsers($options);
var_dump($results);
まとめ
事前設定がややこしいので面倒臭いがコード自体はかなりシンプルになっており、使い易い印象スコープの指定や権限周りについては必要最低限にしておかないとすべてのユーザーに対してなんでもできてしまうので注意が必要
参考
https://github.com/google/google-api-php-client
https://developers.google.com/api-client-library/php/
https://developers.google.com/admin-sdk/directory/v1/guides/authorizing
Author And Source
この問題について(Google Service Accountを使用したユーザー一覧取得 - [PHP]), 我々は、より多くの情報をここで見つけました https://qiita.com/kory/items/6f9ba2b2d4edfccd2bc8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .