Google Calendar API Client Javaを使ったアプリでサービスアカウントで認証するには

Google Calendar APIの認証はOAuth 2.0を利用しており、Webアプリケーション、クライアント・アプリケーションなどのシナリオをサポートしています。
(参照: Using OAuth 2.0 to Access Google APIs)

Google Appsを利用していて、企業向けのサービスや社内システムとGoogle Calendarを連携したい場合、システム単位でユーザーにアクセス許可を求めずに、ドメイン単位でGoogle Appsへのアクセスを設定したいところです。
このようなサーバー間およびバッチ(デーモン)アプリケーションのシナリオでは、JWT(Json Web Token)でサーバー用のアクセストークンを取得する方法が利用できます(2 Legged OAuthとも言う)。

サーバー間用のアクセストークンは、Google Appsのドメイン全体の委任を有効にしたサービス アカウントを作成し、サービス アカウントの秘密鍵を使って生成した署名を含むJWTをhttps://www.googleapis.com/oauth2/v4/tokenにPOSTすることで取得できます。
(参照: Using OAuth 2.0 for Server to Server Applications)

この記事は、サービス アカウントでGoogle Calendar APIへアクセスするシナリオでのJava API クライアント ライブラリの使い方について説明していきます。
簡単に流れは説明しましたが、クライアント ライブラリを利用するので、JWTの作成およびアクセストークンの取得についてはライブラリにおまかせです。
(参照: Calendar API Client Library for Java)

説明用のコードは、以下のJava API クライアントのサンプルのcalendar-cmdline-sampleを使います。
google/google-api-java-client-samples
このサンプルは、ユーザーに認可を求めるクライアント・アプリケーションです。
まずは元の動作を確認し、その後、サービスアカウント認証へ実装を変更していく流れで説明していきます。
“Google Calendar API Client Javaを使ったアプリでサービスアカウントで認証するには” の続きを読む

Google AppEngine PHPからCloud SQLへ接続する

PHPのGoogle AppEngine アプリケーションからGoogle Cloud SQLを利用する手順について調べてみたのでまとめてみました。

公式ドキュメントのチュートリアルUsing Google Cloud SQLに沿って試してみた内容になります。
このページの解説では、かなり他のページも参照しながらでないと進められませんでしたので、ここでは以下の流れを1記事で解説しています。

  1. Cloud SQLのインスタンスを作成
  2. ローカルPC(Max OS X)のMySQL Clientから接続してアプリ用のテーブルを作成
  3. AppEngineからCloud SQLデータベースへ接続

Cloud SQLは、パフォーマンスや機能が改善された第2世代が利用可能になっていますが、2016.03.30現在ベータでAppEngineからの利用はできませんので今回は第1世代を利用しました。

AppEngineのプロジェクト作成とPHPのHello Worldについては前回の記事「Google App Engine PHP開発の進め方」を参照ください。
以下は、この後からの手順になります。
“Google AppEngine PHPからCloud SQLへ接続する” の続きを読む

Google App Engine PHP開発の進め方

AppEngineは、構成選択肢がだいぶ増えておりPHPに加えて、Go、Node.js、Dockerなど様々なプラットフォームが利用可能になっています。
PHPについては、2015.6.16に正式サポートされるようになっています。
App Engine for PHP is generally available. Build scalable apps, faster.

PHPアプリを動かすプラットフォームを改めて検討することになりそうなので、App Engine SDK for PHPの使い方を調べています。
まずは、Hello Worldからですが、AppEngineは、現在Google Cloud Platformの1つのサービスとして利用可能になっています(しばらく触っていなかったのでその辺りも一から調べ直してます)。
昔のコンソール https://appengine.google.com もまだ利用可能なようですが、CGPプロジェクトを作成してAppEngineにデプロイする手順を確認しています。

手順は、Mac OS X El Capitanで確認しました。
SDKを利用するには、前提条件としてPython 2.7が必要です。El Capitanはデフォルトで利用可能なので、Pythonのセットアップと確認は省略しています。

Google App Engine SDK for PHPのインストール

Google App Engine SDK for PHPを開きMac OS XのGoogleAppEngineLauncher-1.9.35.dmg (2016.3.27現在)をダウンロードします。

「Installing on Mac OS X」にしたがってインストールしていきます。

GoogleAppEngineLauncherApplicationsフォルダにドラッグします。
GoogleAppEngineLauncherを開くと、Make command symlinksのプロンプトが開くので[OK]をクリックします。
“Google App Engine PHP開発の進め方” の続きを読む

Google Java Client APIを使ってGoogle Calendar API v3を2-Legged OAuth(2LO)認証して使う手順

この記事の内容は、2016年10月20日にサポート切れになります。

Google Developers Japanの記事: さよなら OAuth 1.0 (2LO)

OAuth 2.0に対応した記事は「Google Calendar API Client Javaを使ったアプリでサービスアカウントで認証するには」を参照ください。


Calendar API V2が11月17日に利用できなくなるため、まだバージョン2を利用しているアプリケーションは期限までにバージョン3のAPIに移行する必要があります。
Upgrade now to Calendar APIv3

Javaのクライアントライブラリを使ってGoogle Calendar APIに2-Legged OAuth(2LO)認証しアクセスするアプリケーションをCalendar API v3に移行するにあたって調べてみたところ、Calendar API Client Library for Javaを利用した2-Legged OAuthのサンプルがなかなか見つかりませんでした。

以下の、公式ブログの記事も情報が古くなっていて、現時点(2014/9/25)でダウンロード可能な最新のライブラリには適用できません。
Calendar API v3, 2-legged OAuth & Java

さらに探してみたところ、StackOverflowの「Google Calendar API returning “Invalid Credentials” (401)」に解決策がありました。

この情報を元に、ライブラリに含まれるコマンドラインアプリケーションのサンプルを2-Legged-OAuth対応にする手順を説明します。
https://code.google.com/p/google-api-java-client/source/browse?repo=samples#hg/calendar-cmdline-sample
“Google Java Client APIを使ってGoogle Calendar API v3を2-Legged OAuth(2LO)認証して使う手順” の続きを読む