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" : ""
}