プログラミングノート

プログラミングの備忘録です

Google APIをPHPウェブアプリケーションから呼び出す(サービスアカウント) 第5回

 サービスアカウントを使って、PHPウェブアプリケーションGoogle APIのやり取りをサーバー間で行います。

 ユーザーデータでなくアプリケーションのデータを使うアプリケーションで、サービスアカウントを使います。サービスアカウントは、アプリケーションごとに決まります。

 サービスアカウントを作成し、アプリケーションデフォルト証明書を使う場合を書きます。

 

事前準備

1.プロジェクトの作成

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回 - プログラミングノートの「1.プロジェクトを作成」をご覧ください。

 

2.使用するAPIの設定

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回 - プログラミングノートの「1.プロジェクトで使用するAPIを設定」をご覧ください。

 

3. サービスアカウントの作成(認証情報の登録)

Google API Google APIを使用するための設定(認証情報の登録) 第2回 - プログラミングノートの「2.OAuth2.0」>「サービスアカウント」にて、
「サービスアカウント名」を入力し「役割」を選択しました。さらに「新しい秘密鍵の提供」にチェックを入れ、「キーのタイプ」に「JSON」を選択して、サービスアカウントを作成しました。

 

4.クライアントライブラリのインストール

Google APIをPHPウェブアプリケーションから呼び出す 第4回 - プログラミングノートの「事前準備」>「2.クライアントライブラリのインストール」にて、PHPクライアントライブラリをインストールしました。

 

  

アプリケーション・デフォルト証明書

  • アプリケーション・デフォルト証明書を使うと、より簡単にGoogle APIを呼ぶための認可を得ることができます。
  • 環境変数に証明書jsonファイルのパスを指定します。
  • アプリケーション・デフォルト証明書は、Google APIs Client Library for PHPのバージョン2.0以降に含まれます。

 

 

手順

1.環境変数GOOGLE_APPLICATION_CREDENTIALSの設定

2.PHPアプリケーションからGoogle APIの呼び出し

 

 

 手順に沿って詳しく書きます。

 1.環境変数GOOGLE_APPLICATION_CREDENTIALSの設定
  1. サービスアカウントキーを作成時にダウンロードしたjsonファイルを、ウェブアプリケーションからアクセスできて、他の人は見ることができない場所に配置します。
  2. 環境変数GOOGLE_APPLICATION_CREDENTIALSでjsonファイルのパスを指定します。

 

 2.PHPアプリケーションからGoogle APIの呼び出し
  1. クライアントオブジェクトを作成します。
  2. seApplicationDefaultCredentialsメソッドを呼び出します。
  3. アクセス範囲を指定します。
  4. クライアントオブジェクトを渡してサービスオブジェクトを作成します。

 

アクセス範囲はURLの形で指定します。アクセス範囲が異なるとURLが異なります。

(例)https: //www.googleapis.com/auth/drive.readonly

 

(※サンプルコード)
$client =new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setScopes(['https: //www.googleapis.com/auth/drive.readonly']);
$service = new Google_Service_Drive($client);
    

 

サービスオブジェクトのインタフェースを使う方法は、後日書きます。

 

 

OpenSSLの使用

 認証のためにOpenSSLを使用します。

 

 OpenSSLが使える状態でないと下のようなエラーメッセージがPHPより出力されます。

PHP Fatal error:  Uncaught Error: Call to undefined function Firebase\JWT\openssl_sign() in ・・・・・」

 

 PHP Version 7.1.0では、下の操作でOpenSSLを使うことができました。

 

 拡張モジュールを読み込むために、環境変数PathにPHPインストールディレクトリへのパスを設定します。

 

 phpinfoで「Configuration(大項目)」に拡張モジュール「openssl(中項目)」が表示され、さらに「openssl(中項目)」の中の「openssl support」がenabledになっている必要があります。

 

 

※サンプルコード

 上記すべてのサンプルコードは、Google Identity PlatformのGoogle Application Default Credentialsから引用しました。

 サンプルコードのライセンス:the Apace 2.0 License(http://www.apache.org/licenses/LICENSES-2.0


 

記事一覧

第1回 Google APIを使用するための設定(プロジェクトの作成・使用するAPIの設定)

第2回 Google APIを使用するための設定(認証情報の登録)

第3回 Google APIを使用するための設定(APIキーの作成)

第4回 Google APIをPHPウェブアプリケーションから呼び出す

第5回 Google APIPHPウェブアプリケーションから呼び出す(サービスアカウント)

第6回 Google APIへの問い合わせ状況と割り当てを確認する方法

第7回 Google APIをPHPウェブアプリケーションから呼び出す(APIキー)

 

参照

Google Identity Platform 「Google Application Default Credentials」

https://developers.google.com/identity/protocols/application-default-credentials

Google APIをPHPウェブアプリケーションから呼び出す(OAuth2.0証明書) 第4回

 今回は、作成済みのOAuth2.0証明書を使用して、PHPウェブアプリケーションからGoogle APIを呼び出します。

 Google APIのドキュメントが親切に書かれていて、私でもGoogle APIを使うことができました。

 

事前準備

1.プロジェクトの作成

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回 - プログラミングノートの「1.プロジェクトを作成」をご覧ください。

 

2.使用するAPIの設定

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回 - プログラミングノートの「1.プロジェクトで使用するAPIを設定」をご覧ください。

 

3. OAuth2.0証明書の作成(認証情報の登録)

Google API Google APIを使用するための設定(認証情報の登録) 第2回 - プログラミングノートの「OAuth2.0クライアントID」にて、
アプリケーションの種類に「ウェブアプリケーション」を指定して、OAuth2.0証明書を作成しました。

 

4.クライアントライブラリのインストール

クライアントライブラリをインストールするために「Composer」を使います。

まず、Composerをインストールします。

 1.php.iniで、openssl.dllを有効にします。

 2.Composerをインストールするディレクトリに移動します。

 3.コマンドプロンプトで下のコマンドを実行し、インストールします。

   php -r "eval('?>'.file_get_contents('https: //getcomposer.org/installer'));"

 4.コマンドプロンプトで下のコマンドを実行しcomposer.batをコピー作成します。

   echo @php "%~dp0composer.phar" %* >composer.bat

 5.Composerインストールディレクトリのパスを環境変数Pathに設定します。

 

次に、コマンドプロンプトで下のコマンドを実行し、クライアントライブラリをインストールします。

composer require google/apiclient:^2.0

 Composer実行ディレクトリがPHPインストールディレクトリと異なる場合、PHPインストールディレクトのパスを環境変数Pathに設定しておく必要があります。

 

最後に、インストールすると作成されるvendor/autoload.phpを、PHPファイルで読み込みます。

例)require_once '../ vendor/autoload.php';

 

 

手順

1.クライアントオブジェクトを作成
2.OAuth2.0サーバーへユーザーをリダイレクト
3.OAuth2.0サーバーからの返信を処理
4.Google APIを呼び出す

 

1.クライアントオブジェクトを作成

 

 クライアントオブジェクトを生成し、生成したクライアントオブジェクトに下の3点をセットします。

  1. OAuth2.0証明書を作成した時、ダウンロードしたjsonファイル
  2. アクセスをリクエストする範囲
  3. エンドポイント(OAuth2.0サーバ―からユーザーが転送されるページ)

 

(※サンプルコード)
Googleドライブへ読み取り専用でアクセス
$client = new Google_Client();
$client->setAuthConfig('client_secrets.json');
$client->addScope(Google_Service_Drive::Drive_METADATA_READONLY);
$client->setRedirectUri('http:// '.$_SERVER['HTTP_HOST'].'/oauth2callback.php');

 

<補足>

  • 「3. エンドポイント(OAuth2.0サーバ―からユーザーが転送されるページ)」は、認証画面で登録した「リダイレクトURI」です。
  • また、OAuth2.0証明書を作成した時ダウンロードしたjsonファイルには、「リダイレクトURI」が書かれていますので、認証情報の「リダイレクトURI」を修正した場合は、再度jsonファイルをダウンロードする必要があります。

 

 

2.OAuth2.0サーバーへユーザーをリダイレクト

(リダイレクト:自動的に別ページへ転送)

 

 ユーザーデータにアクセスする必要がある場合、ユーザーをOAuth2.0サーバへリダイレクトします。リダイレクト後、OAuth2.0サーバーはユーザーを認証します。さらに、OAuth2.0サーバーはユーザーにユーザーデータへのアクセスの同意を確認します。

 

 まずOAuth2.0サーバーへユーザーをリダイレクトするためのURLを作成し、次にユーザーをリダイレクトします。
 

(※サンプルコード)
$auth_url = $client->createAuthUrl();
header('Location:'.filter_var($auth_url, FILTER_SANITIZE_URL));

 

 

3.OAuth2.0サーバーからの返信を処理

 OAuth2.0からの返信は「1.クライアントオブジェクトを作成」でsetRedirectUriメソッドによりセットしたURIに届きます。
 ユーザーが同意した場合は、認可コードが送信され、ユーザーが同意しなかった場合は、エラーメッセージが送信されます。

▼同意してもらった場合
https:// oauth2.examle.com/auth?code=4/P7q・・・・7W91a-oMsCe

▼同意してもらわなかった場合
https:// ouath2.examle.com/auth?error=access_denied

 


 まず認可コードをアクセストークンと交換し、次にアクセストークンを取得します。

(※サンプルコード)
$client->authenticate($_GET['code']);
$access_token=$client->getAccessToken();

 

4.Google APIを呼び出す 

まず、アクセストークンをユーザーのセッションに保存するため、クライアントオブジェクトにアクセストークンをセットします。
 次に、使用するAPIのコンストラクタにクライアントオブジェクトを指定し、サービスオブジェクトを作ります。
 最後に、サービスオブジェクトのインタフェースを使って、APIサービスへ要求します。

 

(※サンプルコード)
$client->setAccessToken($access_token);
$drive_service = new Google_Service_Drive($client);

 

サービスオブジェクトのインタフェースを使う方法は、後日書きます。

 

 

※サンプルコード

 上記すべてのサンプルコードは、Google Identity PlatformのUsing OAuth 2.0 for Web Server Applicationsから引用しました。

 サンプルコードのライセンス:the Apace 2.0 License(htt://www.apache.org/licenses/LICENSES-2.0)


 

記事一覧

第1回 Google APIを使用するための設定(使用するAPIの選択)

第2回 Google APIを使用するための設定(認証情報の登録)

第3回 Google APIを使用するための設定(APIキーの作成)

第4回 Google APIPHPウェブアプリケーションから呼び出す

第5回 Google APIをPHPウェブアプリケーションから呼び出す(サービスアカウント)

第6回 Google APIへの問い合わせ状況と割り当てを確認する方法

第7回 Google APIをPHPウェブアプリケーションから呼び出す(APIキー)

 

参照

Google Identity Platform 「Using OAuth 2.0 for Web Server Applications」

https://developers.google.com/identity/protocols/OAuth2WebServer

 

◇ Composer https://getcomposer.org/

 

GitHub - google/google-api-php-client: A PHP client library for accessing Google APIs

 

 

WindowsマシンにWebアプリケーション開発環境を( Apache2.4 + PHP7.1 ) 第2回

WindowsマシンにWebアプリケーションを開発する環境を準備します。ApachePHPを使います。

今回はPHPの準備を行います。

 

PHP

 

 

PHP ビルドの選択

 PHPApacheに読み込むには、mod_phpまたはmod_fastcgiが必要となります。今回はmod_phpを使います。

 mod_phpを使う場合、PHPはThread-Safe(TS)スレッドセーフのビルドを選択します。

 mod_fastcgiを使う場合、PHPはNon-Thread-Safe(NTS)のビルドを選択します。

 また、PHPApacheが同じバージョンのVisual C、同じCPU(x86またはx64)のビルドである必要があります。

 

 インストールしたApacheがVC14 x64で、またmod_phpを使いたいので、「PHP7.1(7.1.0)(2016年12月16日現在最新)」の「VC14 x64 Thread Safe」をダウンロードしました。

 

 
PHPインストールと設定
  1. PHP For Windows: Binaries and sources Releases から適切なバージョンを選択しダウンロードします。
  2. ダウンロードしたzipファイルを解凍後、展開します。(解凍後のフォルダ名を「php」に変更しました。)
  3. 展開したフォルダに含まれているphp.ini-productionをphp.iniという名前でコピーします。
  4. php.iniで下の内容を変更します。
  • extension_dir = ./xxxx 拡張モジュールを格納するディレクトリへのパス(絶対パス相対パス両方可能)
  • extension = xxxx.dll 起動時に読み込みたい拡張モジュール
  • log_errors = On エラーをログ出力するか(eroor_logディレクティブと組み合わせる)
  • error_log = xxxx.logまたはsyslog エラーログファイルへのパス(絶対パス相対パス両方可能。エラーログファイルはWebサーバが書き込めないといけません。「syslog」と入力するとWindowsのイベントログに記録されます)

 

 

変更は任意ですが、合わせて確認しておくとよいディレクティブがあります。

  • max_execution_time = ## スクリプト実行の最大時間。デフォルト30秒
  • memory_limit = ###M PHPが使用するメモリ量。デフォルト128M
  • display_errors = エラーメッセージをWebサーバに返すかどうか
  • open_basedir = PHPからのファイル操作を許可するディレクトリのパス
  • upload_max_filesize = ###M ファイルのアップロード・POSTするデータの最大サイズ

 

★open_basedirに設定したディレクトリ以外にphpファイルを配置し、そのファイルにブラウザからアクセスすると、下のエラーメッセージが表示されます。

open_basedir restriction in effect. File(・・・) is not within the allowed path(s):

 

 

 PHPApacheハンドラとして設定

 Apacheの設定ファイルhttpd.confを変更します。

 

1. ApachePHPモジュールを読み込むように設定します。

この設定により、拡張子.phpを含むすべてのファイルをPHPで処理します。

 

LoadModule php7_module c:/php/php7apache2_4.dll<php7apache2_4.dllの絶対パス

AddHandler application/x-httpd-php .php

 

 

2.PHPの設定ファイルphp.iniへのパスを設定します。

 

PHPIniDir c:/phpphp.iniを含むディレクトリの絶対パス

 

 

 

★上記「c:/php」はPHPを展開した環境に合わせて変更してください。

 

★ファイル名の最後が「.php」の場合だけPHPで処理したい場合は、下の設定を行います。

<FilesMatch /.php$>

SetHandler application/x-httpd-php

</FilesMatch>

 

Windows上でApache設定ファイルにパスを入力するとき、バックスラッシュ(\)を前向きスラッシュ(/)に変換する必要があります。

 

PHPが公式にサポートしているのは、ApacheLoungeです。

 

 

参照

PHPマニュアルより

Windows上でのPHPの手動インストール(http://php.net/manual/ja/install.windows.manual.php

古いWindowsシステムへのインストール(http://php.net/manual/ja/install.windows.legacy.index.php

 

WindowsマシンにWebアプリケーション開発環境を( Apache2.4 + PHP7.1 ) 第1回

WindowsマシンにWebアプリケーションを開発する環境を準備します。ApachePHPを使います。

今回はApacheの準備を行います。

 

Apacheのインストール・設定

  1. Apache 2.4 VC14 Windowsバイナリ(2016/12/12現在最新)をインストールします。
  2. Apache VC14 binaries and modules download にアクセスします。
  3. OSの種類に合わせてzipファイルを選択し、zipファイル名リンクをクリックします。(OSの種類はコントロールパネルのシステムに書かれている「システムの種類」です。システムの種類は64ビットOSと32ビットOSがあります。)
  4. ダウンロードしたzipファイルを解凍します。
  5. 解凍したフォルダ内にあるApache24フォルダを配置します。

 

「c:/Apache24」以外に配置した場合は、httpd.comfファイルを書きかえます。

Apache24フォルダ>conf>httpd.confファイルを書き換えます。

  • 「ServerRoot」
  • 「DocumentRoot」
  • 「<Directory "・・・">」の「・・・」部分(複数あります)
  • 「ScriptAlias」

 

Apache 2.4を使う場合、Windows Visual C++ 2015 ランタイムが必要です。

コントロールパネルの「プログラム」にWindows Visual C++ 2015 ランタイムが含まれているか確認します。

Windows Visual C++ 2015 ランタイムがインストールされていないと、Apache起動時に「コンピューターにVCRUNTIME140.dllがないため、プログラムを開始できません。(略)」というエラーが表示されます。

 

Windows Visual C++ 2015 ランタイムをインストール

  1. Download Visual Studio 2015 の Visual C++ 再頒布可能パッケージ from Official Microsoft Download Center にアクセスします。
  2. OSの種類にあったプログラムを選択してダウンロードします。(例 64ビットOSの場合vc_redist.x64.exeです。)
  3.  ダウンロードしたexeファイルをWクリックします。規約に同意にチェックを入れてインストールボタンを押すと、インストールが始まります。
  4.  インストールが完了すると、「セットアップ完了」が表示されます。

 

 

 Apacheの開始停止

ServerRootのApache24>bin>httpd.exeを実行します。コマンドプロンプトで「httpd.exe」と入力しEnterボタンを押します。

停止させるときは、コマンドプロンプトでCtrlボタンと「c」を同時に押します。

 

補足

コマンドプロンプトで「httpd.exe」を入力するとき、どこに格納されているhttpd.exeを実行するのか指定する必要があります。下のいずれかを行います。

 

ApacheMonitorを使ってApacheの開始停止

ApacheMonitorにはStartボタンやStopボタンなどがあります。

ApacheMonitorを使うにはApacheをサービスに登録しておく必要があります。

 

Apacheをサービスに登録するには

コマンドプロンプトで「httpd.exe -k install」と入力しEnterボタンを押します。

登録後、コントロールパネル>管理ツール>サービス(ローカル)に表示されます。

 

★ApacheMonitorを使うには

  1. ServerRootのApache24>bin>ApacheMonitor.exeをWクリックして起動します。(ApacheMonitor.exeをスタートアップに登録しておくと便利です。)
  2. タスクバーのApacheMonitorアイコンをクリックすると「Apache24」とステータスマーク(赤:停止中、青:稼働中)が表示されます。「Apache24」をクリックすると、開始・停止するためのメニューが表示されます。

タスクバーにあるApacheMonitorアイコンをWクリックすると「Apache Service Monitor」画面が表示されます。「Apache Service Monitor」画面からも開始・停止ができます。

 

 

Apacheの稼働確認

Apacheを開始した後、ブラウザから「127.0.0.1」にアクセスします。

「It work!」が表示されると問題ありません。

 

 

次回

PHPを準備します。

Google APIを使用するための設定(APIキーの作成) 第3回

 アプリケーションがGoogle APIとやり取りするために認証が必要です。

 ブログなど公開されたデータを使うアプリケーションの場合は、APIキーを使って認証することができます。APIキーを使う認証は、APIキーによりプロジェクトを識別します。

  今回は、①APIキーの作成と②APIキー使用の注意について書きます。

 

APIキーを作成する前に

 APIコンソールで、①プロジェクトの作成と②使用するAPIの設定を行った後、APIキーを作成します。

 

1.プロジェクトの作成

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回 - プログラミングノートの「1.プロジェクトを作成」をご覧ください。

 

2.使用するAPIの設定

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回 - プログラミングノートの「1.プロジェクトで使用するAPIを設定」をご覧ください。

 

 

1.APIキーの作成

 アプリケーションが下の条件を満たす場合、APIキーを使うことができます。

  • アプリケーションがウェブアプリケーションの場合
  • アプリケーションがユーザーデータを必要としない場合
  • アプリケーションが暦やブログなど公的なデータを使用する場合

 

 下の手順で、APIキーを作成します。

  1.  APIコンソール(https://console.developers.google.com/)にアクセスしAPI Magenerを開きます。
  2. Google APIsの右横に表示されているプロジェクト名を確認します。プロジェクトを変更したい場合やプロジェクトを作成したい場合は、プロジェクト名の右横の「▼」をクリックします。
  3. API Managerの左メニューに表示されている「認証情報」をクリックすると、「認証情報」画面が表示されます。
  4. 「認証情報を作成」をクリックします。
  5. APIキー」をクリックすると、API キーが作成され「API キーを作成しました 」と表示されます。
  6. 「自分の API キー」をコピーし大切に保管します。(右端のコピーアイコンをクリックするとコピーしやすいです。)

 作成したAPIキーは「認証画面」タブで確認することができます。

 

作成したAPIキーを使って、公開されているGoogleカレンダーから日本の祝日を取得する方法を紹介します。

詳しくは、Google APIをPHPウェブアプリケーションから呼び出す(APIキー) 第7回 - プログラミングノート をご覧ください。

 

2.APIキー使用の注意

  APIキーでプロジェクトを識別して、割り当てとアクセスが行われます。そのため、割り当ての盗用や不正使用を防止するため、APIキーの取り扱いには注意が必要です。

  • プログラムコードにAPIキーを直接記述せず、環境変数に設定したり、外部ファイルに記述します。
  • 外部ファイルにAPIキーを記述する場合、その外部ファイルはアプリケーションのソースツリーの外に保管します。
  • IPアドレス、HTTPリファラ―、モバイルアプリを指定して、APIキーの使用を制限します。
  • 不要なAPIキーは削除します。
  • 定期的にAPIキーを再作成し、APIキーを更新します。
  • プログラムコードを公開する場合、APIキーなど個人情報が含まれないように注意します。

 

 下の手順で、APIキー使用を制限します。

  1.  APIコンソール(https://console.developers.google.com/)にアクセスしAPI Magenerを開きます。
  2. Google APIsの右横に表示されているプロジェクト名を確認します。プロジェクトを変更したい場合やプロジェクトを作成したい場合は、プロジェクト名の右横の「▼」をクリックします。
  3. API Managerの左メニューに表示されている「認証情報」をクリックすると、「認証情報」画面が表示されます。
  4. 認証画面で表示されているAPIキーの名前をクリックすると、そのAPIキーの設定画面が表示されます。
  5. APIキーの設定画面で制限方法を選択します。「HTTPリファラ―(ウェブサイト)」、「IPアドレス(ウェブサーバー、cronジョブなど)」、「Androidアプリ」、「iOSアプリ」からいずれかを選びます。
  6. 制限方法を選択すると、それぞれの制限で必要な情報の入力欄が表示されます。入力後、「保存」を押します。

 

記事一覧

第1回 Google APIを使用するための設定(プロジェクトの作成・使用するAPIの設定)

第2回 Google APIを使用するための設定(認証情報の登録)

第3回 Google APIを使用するための設定(APIキーの作成)

第4回 Google APIをPHPウェブアプリケーションから呼び出す

第5回 Google APIをPHPウェブアプリケーションから呼び出す(サービスアカウント)

第6回 Google APIへの問い合わせ状況と割り当てを確認する方法

第7回 Google APIをPHPウェブアプリケーションから呼び出す(APIキー)

 

参照

「Manage APIs in the API Console - API Console Help」

https://support.google.com/googleapi/answer/7037264?hl=en&ref_topic=7013279

「Setting up API keys」と「Best practices for securely using API keys」を参照しました。

 

Google APIを使用するための設定(認証情報の登録) 第2回

  第1回に引き続きGoogle APIを使用するための設定をします。今回はAPIとやり取りをするための認証情報を登録します。

 認証は大きく分けて2種類あります。①APIキーを使う認証と②OAuth2.0を使う認証の2種類です。それぞれの認証に必要な情報を登録する方法を書きます。

 

認証情報を登録する前に

 APIコンソールで、①プロジェクトの作成と②使用するAPIの設定を行った後、認証情報を登録します。

 

1.プロジェクトの作成

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回 - プログラミングノートの「1.プロジェクトを作成」をご覧ください。

 

2.使用するAPIの設定

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回 - プログラミングノートの「1.プロジェクトで使用するAPIを設定」をご覧ください。

 

 

1.APIキーを使う認証

  APIキーについては、下の記事をご参考ください。

Google APIを使用するための設定(APIキーの作成) 第3回 - プログラミングノート

 

2.OAuth2.0を使う認証

 アプリケーションがAPIを使用してGoogleユーザーのデータにアクセスする場合、こちらを行います。

 OAuth2.0証明書を使う認証とサービスアカウントを使う認証の2種類があります。

 OAuth2.0証明書を使う場合、ユーザーに対して同意画面を表示し、ユーザーにレスポンスを求めます。一方、サービスアカウントを使う場合、ユーザーに対して同意画面を表示しません。そのため、プログラムからAPIへ問い合わせすることができます。

 

OAuth2.0証明書

 アプリケーションがOAuth2.0証明書で認証されると、アプリケーションのユーザーに同意画面が表示されます。同意画面でユーザーが同意すると、アプリケーションがユーザーデータにアクセスするための認証コードが生成されアプリケーションに送信されます。アプリケーションは認証コードを使ってアクセストークンを取得し、アクセストークンを使ってユーザーデータにアクセスします。

 

下の手順で、OAuth2.0証明書を作成します。

  1.  APIコンソール(https://console.developers.google.com/)にアクセスしAPI Magenerを開きます。
  2. Google APIsの右横に表示されているプロジェクト名を確認します。プロジェクトを変更したい場合やプロジェクトを作成したい場合は、プロジェクト名の右横の「▼」をクリックします。
  3. 左メニューに表示されている「認証情報」をクリックすると、「認証情報」画面が表示されます。
  4. 「認証情報を作成」をクリックします。
  5. 「OAuthクライアントID」をクリックすると、「クライアントIDの作成」画面が表示されます。
  6. プロジェクト内ではじめてクライアントIDを作成する場合は、同意画面の設定が求められます。「同意画面を設定」をクリックします。(画面中央にある「OAuth同意画面」をクリックしても同じ画面が表示されます。)
  7. 「OAuth同意画面」で必須のメールアドレスとサービス名を入力します。(その他に、ホームページのURL、サービスロゴのURL、プライバシーポリシーのURL、利用規約のURLの項目があります。)
  8. 入力後「保存」ボタンを押すと、保存後「クライアント ID の作成」画面に戻ります。

  9. 「クライアント ID の作成」画面で「アプリケーションの種類」を選択します。

    アプリケーションの種類ごとに入力内容が違います。今回は「ウェブアプリケーション」を選択します。

  10. アプリケーションの名前、ブラウザからのリクエストで使用するJavaScript生成元 URI、認証後ユーザーがリダイレクトされるアプリケーション内のURI を、入力します。
  11. 「作成」をクリックします。
  12. 作成後、OAuthクライアント画面に、クライアントIDとクライアントシークレットが表示されます。クライアントIDとクライアントシークレットをコピーして保存します。(右端のコピーマークをクリックすると、コピーしやすいです。)

  13.  「OK」をクリックします。

  14. 作成したクライアントIDは「認証画面」タブで確認することができます。

 

作成したOAuth2.0証明書の使い方は、下の記事をご覧ください。

Google APIをPHPウェブアプリケーションから呼び出す 第4回 - プログラミングノート

 

 

サービスアカウント

 「サービスアカウントは、アプリケーションがプログラムによりGoogleサービスにアクセスするために使用できる特別なGoogleアカウントです。」(Cloud Identity and Access Management https://cloud.google.com/iam/docs/service-accountsより引用)

 サービスアカウントを使うとアプリケーションによる認証を行うことができます。アプリケーションがAPIを使用するためには、サービスアカウントキーを作成する必要があります。

 

サービスアカウント作成

 デフォルトで「App Engine default service account」と「Compute Engine default service account」というサービスアカウントが用意されていますが、今回は、別のサービスアカウントを新規作成します。

  1. Google Apis の左横にあるメニューマークをクリックし、表示されるメニューから「IAMと管理」を選択します。
  2. 左メニューの「サービスアカウント」をクリックすると、プロジェクトのサービスアカウントが表示されます。
  3. 「サービス アカウント」(タイトル)の右横にある「サービスアカウントを作成」リンクをクリックすると、サービスアカウントの作成画面が表示されます。
  4. サービスアカウントの作成画面に入力します。

 

 サービスアカウントの作成画面には下の入力項目があります。

  • サービスアカウント名(このサービスアカウントで行うことを入力)
  • 役割
  • 新しい秘密鍵の提供
  • G Suite ドメイン全体の委任を有効にする

 「新しい秘密鍵の提供」を選択した場合、「キーのタイプ」を選択します。

 「新しい秘密鍵の提供」を選択してサービスアカウントを作成すると、「キーのタイプ」で選択した種類のファイルをダウンロードします。ダウンロードしたファイルは保存し大切に保管します。

 

 

 サービスアカウントキーの作成

  1.  APIコンソール(https://console.developers.google.com/)にアクセスしAPI Magenerを開きます。
  2. Google APIsの右横に表示されているプロジェクト名を確認します。プロジェクトを変更したい場合やプロジェクトを作成したい場合は、プロジェクト名の右横の「▼」をクリックします。
  3. 左メニューに表示されている「認証情報」をクリックすると、「認証情報」画面が表示されます。
  4. 「認証情報を作成」をクリックします。
  5. 「サービスアカウントキー」をクリックすると、「サービスアカウントキーの作成」画面が表示されます。
  6.  「サービスアカウントキーの作成」画面で、サービスアカウントキーを作成するサービスアカウントを選択します。キーのタイプでJSONかP12を選択します。
  7. 入力後、「作成」をクリックすると、Windowsのダウンロード画面が表示されます。ダウンロードしたファイルを保存し大切に保管します。
  8.  作成したサービスアカウントキーに関しては「認証画面」タブで確認することができます。

 

 

サービスアカウントキーの使い方

Google APIをPHPウェブアプリケーションから呼び出す(サービスアカウント) 第5回 - プログラミングノート をご覧ください。

 

 

デフォルトのサービスアカウントについて補足

 サービスアカウント「APP Engine default service account」はGoogle App Engineサービスで、サービスアカウント「Compute Engine default service account」はGooge Compute Engineサービスで使います。

Google App Engineサービスについては、下記ページをご覧ください。

Google App Engine とは?  |  App Engine  |  Google Cloud Platform

Google Compute Engineサービスについては、下記ページをご覧ください。

 Compute Engine - IaaS  |  Google Cloud Platform

 

 

記事一覧

第1回 Google APIを使用するための設定(使用するAPIの選択)

第2回 Google APIを使用するための設定(認証情報の登録)

第3回 Google APIを使用するための設定(APIキーの作成)

第4回 Google APIをPHPウェブアプリケーションから呼び出す

第5回 Google APIをPHPウェブアプリケーションから呼び出す(サービスアカウント)

第6回 Google APIへの問い合わせ状況と割り当てを確認する方法

第7回 Google APIをPHPウェブアプリケーションから呼び出す(APIキー)

 

 

参照

「Manage APIs in the API Console - API Console Help」

https://support.google.com/googleapi/answer/7037264?hl=en&ref_topic=7013279

「Credentials, access, security, and identity」と「Setting up OAuth 2.0」を参照しました。

 

「Cloud Identity and Access Management」

https://cloud.google.com/iam/docs/service-accounts

 

Google APIを使用するための設定(プロジェクトの作成 ・ 使用するAPIの設定) 第1回

Google APIとは

 Googleサービスとアプリケーションの間でやり取りをするためのものです。

 Google APIを使いGoogleカレンダーGoogleドキュメントなどのGoogleサービスとやり取りをすると、Googleサービスにあるデータを使うアプリケーションを作成することができます。

 

Google APIを使用するための設定

 API コンソール(https://console.developers.google.com/)で、プロジェクトごとに設定します。

 APIを使用するために、①プロジェクトを作成したり、②プロジェクトで使用するAPIを設定したり、③APIへのアクセスに必要な認証情報を登録します。

 

(2017年1月25日編集)

 アプリケーションとAPIでやり取りをするとき、APIの使用量に制限があります。請求先アカウントを作成するなどして課金を設定すると、API使用量の上限を引き上げることができるAPIがあります。この制限に関しましてはAPIにより異なりますので、使用するAPIのドキュメントをご確認ください。

 APIコンソールで、API使用量を確認したり、課金や請求先アカウントを管理したりします。API使用状況やAPI使用制限の上限(割り当て)を確認する方法については下の記事をご参考ください。

Google APIへの問い合わせ状況と割り当てを確認する方法 第6回 - プログラミングノート

 API使用量の制限がありますので、APIを使用できるようにする前に、使用するAPIのドキュメントをご確認される方がいいと思います。

 

 

APIを使用するための設定手順

  1. プロジェクトを作成
  2. プロジェクトで使用するAPIを選択
  3. APIへのアクセスに必要な認証情報を登録

 

1.プロジェクトを作成

新しいプロジェクトの作成画面を表示します。

 

  1. 最初に、API コンソール(https://console.developers.google.com/)にアクセスします。
  2. アクセスして表示された画面の左上にある「Google APIs」の右横に、「project」または、作成済みのプロジェクト名が表示されます。それらの右横の「▼」をクリックします。
  3. クリックして表示された選択メニューで、「プロジェクトを作成」をクリックすると、「新しいプロジェクト」画面が表示されます。

 

新しいプロジェクトの作成画面で入力します。

 

プロジェクト名

 API コンソールでプロジェクトを管理するためにつける名前です。

 APIコンソールで識別しやすいプロジェクト名を入力します。

 

プロジェクトID

 プロジェクトごとにつけられたグローバルに固有なIDです。プロジェクトIDが割り振られ表示されます。

 表示されたIDを変更したい場合は、「プロジェクトIDは・・・です」の右横の「編集」リンクをクリックすると、プロジェクトIDを入力するためのテキストボックスが表示されます。

 表示されたテキストボックスの右端にある回転している矢印マークをクリックすると、別のプロジェクトIDの候補が表示されます。テキストボックスにプロジェクトIDを直接入力することもできます。

 プロジェクト作成後に変更できません。

 

 詳細設定

 「詳細設定を表示」リンクをクリックすると、「App Engineの地域」が表示されます。私は初期表示された「us-central」を選択しました。

 

 また、はじめてプロジェクトを作成する場合のみ、下の2項目が表示されます。

  • 「新機能のお知らせ、パフォーマンスに関するアドバイス、フィードバック調査、特典に関する最新情報をメールで受け取ります。」が表示されます。私は「はい」を選択しました。
  • 利用規約に同意するため、私は「はい」を選択しました。

 

入力後「作成」リンクをクリックします。

 

 

2.プロジェクトで使用するAPIを設定

  1.  画面の左上にある「Google APIs」の右横にプロジェクト名が表示されていることを確認します。別のプロジェクトを選択したい場合は、「▼」をクリックしてプロジェクトを選択します。
  2. 画面の左メニューから「ライブラリ」をクリックします。
  3. 「よく使われるAPI」一覧に表示されているAPI名をクリックします。または、検索を行い検索結果に表示されたAPI名をクリックします。
  4. API名をクリックすると、選択したAPIの画面が表示されます。画面中央上にある「有効にする」リンクをクリックします。

画面の左メニューの「ダッシュボード」をクリックすると、画面中央下にある「API」に有効にしたAPIが表示され、確認することができます。

 

 

3.APIのアクセスに必要な認証情報を登録

 引き続き APIへのアクセスに必要な認証情報を登録を行います。

認証情報の登録は下の記事をご覧ください。

Google APIを使用するための設定(認証情報の登録) 第2回 - プログラミングノート

 

記事一覧

第1回 Google APIを使用するための設定(プロジェクトの作成・使用するAPIの設定)

第2回 Google APIを使用するための設定(認証情報の登録)

第3回 Google APIを使用するための設定(APIキーの作成)

第4回 Google APIをPHPウェブアプリケーションから呼び出す

第5回 Google APIをPHPウェブアプリケーションから呼び出す(サービスアカウント)

第6回 Google APIへの問い合わせ状況と割り当てを確認する方法

第7回 Google APIをPHPウェブアプリケーションから呼び出す(APIキー)

 

 

 

参照

「Manage APIs in the API Console - API Console Help」

https://support.google.com/googleapi/answer/7037264?hl=en&ref_topic=7013279

「Enable and disable APIs」を参照しました。