Google Calendar APIを使って、PHPから予定の取得と追加をする為の準備をしていきます。
Google Calendar APIの準備
まずはGoogle Cloudにアクセスします。
プロジェクトの選択
画面上部の【プロジェクトを選択】をクリックしてプロジェクトを選択します。
プロジェクトの作成
プロジェクトがない場合は作成します。
【新しいプロジェクト】を選択します。
【プロジェクト名】に任意の名前を入力し、【作成】ボタンをクリックし、プロジェクトを作成します。
APIの有効化
左上のメニュー→【APIとサービス】→【ライブラリ】をクリックします。
検索フォームに【calendar】と入力し、【Google Calendar API】をクリックします。
【有効にする】ボタンをクリックし、有効化します。
サービスアカウントの作成
次にAPIを制御する為のサービスアカウントを作成します。
左上のメニュー→【APIとサービス】→【認証情報】をクリックします。
【認証情報を作成】リンクから【サービスアカウント】をクリックします。
「①サービスアカウントの詳細」で【サービスアカウント名】に任意の名前を入力します。
※【サービスアカウントID】は自動で入力されます。
入力後、【作成して続行】ボタンをクリックし、【完了】ボタンをクリックします。
※②③は省略します。
認証情報の【サービスアカウント】に先程作成した情報が追加されているのでリンクをクリックします。
※作成されたメールアドレスを後程Googleカレンダーに登録するので控えておきます。
【キー】タブ→【鍵を追加】ボタン→【新しい鍵を作成】をクリックします。
【キーのタイプ】を【JSON】に選択し、【作成】ボタンをクリックするとjsonファイルがダウンロードされます。
※jsonファイルはアプリケーションを作成する際に使用するので保管しておきます。
Googleカレンダーの準備
新規カレンダーを作成
Googleカレンダーを開き、左のメニューの【他のカレンダー】の横にある【+】をクリックし、【新しいカレンダーを作成】をクリックします。
任意の名前を付けて【カレンダーを作成】をクリックします。
カレンダーにサービスアカウントの権限を設定
先程Google Cloudで作成したサービスアカウントのメールアドレスを用意しておきます。
場所は画面左上のメニュー→【APIとサービス】→【認証情報】で表示された画面内の【サービスアカウント】項目の所です。
Googleカレンダーに戻り、画面右上にある歯車アイコンから【設定】をクリックします。
左メニューの【マイカレンダーの設定】から先ほど作成したカレンダーを選択し、【特定のユーザーまたはグループと共有する】をクリックし、【ユーザーやグループを追加】をクリックします。
【メールアドレスまたは名前を追加】 にサービスアカウントのメールアドレスを設定。
【権限】は【変更および共有の管理権限】を選択し、【送信】をクリックします。
【特定のユーザーまたはグループと共有する】の項目にサービスアカウントが追加されました。
とりあえずこれで下準備は終了です。
ここまで終わればPHPからカレンダーの予定取得と追加を出来るようになります。
【番外】ゲスト追加をする為の下準備
ここからはGoogle Workspaceに登録済み、且つPHPから予定のゲストを追加したい人向けの下準備になります。
まずはGoogle Adminにアクセスします。
Google Admin画面上部にある検索フォームから【APIの】と入力し、【APIの制御】をクリックします。
次に画面右下にある【ドメイン全体の委任】ブロックにある【ドメイン全体の委任を管理】をクリックします。
さらに【APIクライアント】項目の横にある【新しく追加】をクリックします。
【クライアントID】と【OAuthスコープ】の設定は以下に続きます。
クライアントIDの設定
クライアントIDはGoogle Cloudのサービスアカウント詳細にあるIDを使用します。
Google Cloud画面左上のメニュー→【APIとサービス】→【認証情報】で表示された画面内の【サービスアカウント】項目で作成したサービスアカウントのメールをクリックします。
サービスアカウント詳細にある【一意のID】をクライアントIDとして設定します。
OAuthスコープの設定
まずは下記URLを設定します。
https://www.googleapis.com/auth/calendar
そうするとOAuthスコープの入力項目が一つ増えるので、そこに下記URLを設定します。
https://www.googleapis.com/auth/calendar.events
設定が終わったら【承認】をクリックします。
以上でゲスト追加する為の下準備は終了です。