オリエンテーリング/ロゲイニングのGoogleカレンダーは2012年から公開しています。当ブログは、仕組みについてのメモです。
現在、データやI/F(Interface)は、
②Googleカレンダーは、Googleのどこかのサーバーに格納されていて、WEBやアプリ経由の対人I/FとAPI(application programming interface)経由での対PGM I/Fが提供されている。対PGM I/Fは複数の言語に対応しているが、森を走ろう!はPHP言語ベースのWordpressというシステムの上に乗っているので、APIもPHP用を使用。
Google側のI/Fは、個々のデータの中身を処理するAPIの部分と、データを処理する権限を扱う仕組みの2重構造になっている。同期のプログラミングはarrayに読み込んでマッチングするだけなので、省略。権限設定の手順は次のとおり
(1)権限に関する設定
⇒ プロジェクトの開始
⇒ プロジェクトID取得
⇒ Google Calendar API の有効化
⇒ サービスアカウントの作成
⇒ メールアドレス(A)取得、暗号キーファイル(B)作成&DL
(1.2)同期させたいGoogleカレンダー
⇒ 設定(歯車)
⇒ 左側の「マイカレンダーの設定」から対象のカレンダーを選択
⇒ サブメニュー「特定のユーザーとの共有」を選択し
右側の「+ユーザーを追加」を選択し、
(A)のメールアドレスに「変更および共有の管理権限」を付与して設定
⇒ サブメニューの「カレンダーの統合」を選択し、
カレンダーID(C)を記録しておく
(2)APIライブラリーの設定とプログラミング
・設置したapi-libraryのファイル情報、メールアドレス(A)、暗号キーファイル(B)、カレンダーID(C)を同期用プログラムに設定して実行
・Googleは、カレンダー所有者側が操作許可している事、同期プログラムの作成側が正当な権限を持っていることをAPI経由で確認できたときカレンダー操作を許可する。
api-libraryのdownload元:
https://github.com/googleapis/google-api-php-client/releases
[注1]
以前はAPIキーを取得する事で、データを参照するだけでなく、変更もできました。しかし、現在はAPIキーでは公開されているデータの参照のみしかできません。現在は、変更も行うには、oAuth2という仕組みで基本的には毎回データの所有者の許可を得るか、今回利用したサービスアカウントという仕組みを使うかのどちらかになっっています。
今回、手間取ってしまったのは、api-libraryが古いままサービスアカウント方式で同期しようとしたため、どうしてもエラーから抜け出せず、このミスに気づくのに時間がかかってしまったためです。api-libraryを最新化したら正常に動くようになりました。