プログラミングノート

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

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