プログラミングノート

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

Google カレンダーを施設予約カレンダーとして使用する 第1回

 いつもはGoogleカレンダーを予定管理に使っていますが、今回は施設予約管理カレンダーとして使ってみます。

 カレンダーの作成・設定変更と予定の登録についても書きます。

 「gmail.com」で終わるGoogleアカウントでログインし、Googleカレンダーを使います。

 

Google カレンダーの起動方法

  1. Googleサービスログイン画面(https://accounts.google.com/Login?hl=ja#identifier)にアクセスし、ログインします。
  2. 画面右上の「Google アプリ」(小さな■が9つ並んでいる)ボタンをクリックします。
  3. Google アプリ一覧に表示された「カレンダー」アイコンをクリックします。

 

カレンダーの新規作成

  1. 左メニューの「マイカレンダー」の右横にある「▼」をクリックします。「新しいカレンダーの作成」を選択します。
  2. カレンダー名を入力し、左上の「カレンダーを作成」ボタンを押します。

 

カレンダーの設定変更

  1.  マイカレンダーのリストに作成したカレンダーが追加されます。カレンダー名の右横にある「▼」をクリックします。「カレンダーの設定」を選択します。
  2. 選択したカレンダーの詳細画面が表示されます。カレンダーの詳細画面には、「カレンダーの情報」「このカレンダーを共有」「通知を編集」「ゴミ箱」の4つのタブがあります。
  3. カレンダーの設定を変更した場合は、必ずタブの下にある「保存」ボタンを押します。

 

カレンダー情報タブ
  • 「招待状の自動承諾」:「招待された日時が空いていれば自動承諾する。」にチェックを入れました。(施設予約用の場合、招待のたびカレンダーのオーナーが承諾する必要はないと考えました。「招待状の自動承諾」はカレンダーの用途に合わせて選択してください。)
  • 「カレンダーのアドレス」:表示されているカレンダーIDを控えました。(施設予約のため、予定入力時にカレンダーIDを入力します。)

 

このカレンダーを共有タブ
  • 「特定のユーザーと共有」の「ユーザー」:施設予約カレンダーを共有するユーザーのメールアドレスを入力し、「権限の設定」を選択し、「ユーザーの登録」ボタンを押しました。

 

カレンダー情報タブの「招待状の自動承諾」で「招待された日時が空いていれば自動承諾する。」を選択した場合は、カレンダーですべての予定の詳細を閲覧可能にする必要があります。

 

 

予定の登録(同時に施設を予約)

  1. 「マイカレンダー」から予定管理カレンダーを選択します。
  2. 日時を選択すると、簡易予定入力画面が表示されます。「編集」ボタンを押します。
  3. 予定編集画面で、予定のタイトルや日時を入力します。
  4. 予定編集画面の右側にある「ゲストを招待」に、施設予約カレンダーのカレンダーID(メールアドレス)を入力します。
  5. 予定の「保存」ボタンを押します。

 

  「ゲストを招待」に、Gmailの連絡先に登録されているメールアドレスを入力すると、入力候補が表示されます。

 

予定と施設予約を確認

予定管理カレンダーと施設予約カレンダーの両方に予定が追加されます。(それぞれのカレンダーで確認してください。)

 

施設予約カレンダーで、空いていれば招待状に自動承諾すると設定している場合

施設予約カレンダーで空きがある場合、予定の詳細に「(施設予約カレンダー)さんは参加します。」と表示され、施設予約カレンダーで空きがない場合、予定の詳細に「(施設予約カレンダー)さんは参加しません。」と表示されます。

後から登録しようとした予定を辞退します。

 

予定管理カレンダーで、招待状への返信を受信すると設定している場合

カレンダーの詳細画面にある「通知を編集」タブで、「予定の返信:ゲストリストを閲覧できる予定にゲストが返信した場合に通知を受け取る。」と設定している場合、施設予約カレンダーに空きがなければ、下のメールが送信されます。

タイトル:「辞退:(予定のタイトル)- (開始日時)~(終了日時)」
本文の一部:「(施設予約カレンダー)さんがこの予定を辞退しました。(略)」

 

 

予定を複製して予定の入力を楽に

 共有施設が複数ある場合、それぞれの施設ごとにカレンダーを用意する必要があります。どの施設がどのカレンダーIDなのか覚えておいて、予定を入力するときに使用する施設のカレンダーIDを入力しなければいけません。

 

 登録済みの予定を複製しタイトルや日時を編集することで、予定の入力が楽になります。

  1. 予定を選択して、予定詳細画面を表示します。
  2. 予定詳細画面の上にある「その他操作」プルダウンで「予定の複製」を選択します。
  3. タイトルや日時などを編集し「保存」ボタンを押します。

 

 

記事一覧

第1回 Google カレンダーを施設予約カレンダーとして使用する

第2回 Google カレンダーをHTMLページに埋め込み表示する

 

参照

カレンダーヘルプ 会議室や共有施設用のカレンダーの作成

https://support.google.com/calendar/answer/44105?hl=ja

 

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