APIキーでの連携

APIキーで連携してGoogleカレンダーのデータを読込む場合は、Googleカレンダーを誰でもアクセスできる状態になります。ただ、APIキーによるGoogle Calendar Apiへのアクセスは、WebやIPアドレスの指定で利用制限を加えられますので、実際に利用する場合はそれらの制約を設定する必要があります

ここではテスト的な検討なので制約設定に関してはスルーします

どんな設定をするかというと、Google Api側ではApiの有効化とAPIキーの発行をいます

使用手順としては、Webアプリ側からAPIキーを送信してから、IDでカレンダーを指定してデータ要求を送信すれば、Googleカレンダーからデータが送信されます

私の持っているイメージですが、APIキーをGoogleカレンダーに登録しているわけではないので、APIキーはGoogle Apiの使用を許可しているようなイメージを持っています

サービスアカウントでの連携

Googleカレンダーを誰でもアクセスできる状態で使用するAPIキーに対し、サービスアカウントを公開しないでGoogleカレンダーにアクセスできます

どんな設定をするかというと、Google Api側ではApiの有効化とサービスアカウントの発行、更に秘密鍵の発行(ダウンロード)を行います。サービスアカウント(メール形式の文字列)を使用するGoogleカレンダーに登録します

使用手順としては、Webアプリ側から秘密鍵を送信してから、IDでカレンダーを指定してデータ要求を送信すれば、Googleカレンダーからデータが送信されます

サービスアカウントをGoogleカレンダーに登録し、サービスアカウントに対応した秘密鍵をWebアプリから送信します。これも私の持っているイメージですが、Googleカレンダーは送られてきた秘密鍵中のサービスアカウントが自身に登録されていれば、秘密鍵をGoogle Apiに問い合わせて照合しているようなので、Googleカレンダーで判定でき公開する必要はありません。以下が秘密鍵の形式です(データは ”” にしてます)。client_email がGoogleカレンダーに登録するサービスアカウントの文字列になります

{
  "type"                       : "",
  "project_id"                 : "",
  "private_key_id"             : "",
  "private_key"                : "",
  "client_email"               : "",
  "client_id"                  : "",
  "auth_uri"                   : "",
  "token_uri"                  : "",
  "auth_provider_x509_cert_url": "",
  "client_x509_cert_url"       : ""
}