Jak dodać wydarzenia do Kalendarza Google w PHP?
Wprowadzenie
Google Calendar API pozwala na automatyczne dodawanie wydarzeń do kalendarza Google za pomocą PHP. W tym artykule pokażemy dwa sposoby:
- Uwierzytelnienie użytkownika przez OAuth 2.0
- Wykorzystanie konta usługi (Service Account)
Metoda 1: OAuth 2.0 – Autoryzacja użytkownika
1. Utworzenie projektu w Google Cloud Console
1. Przejdź do Google Cloud Console.
2. Utwórz nowy projekt lub wybierz istniejący.
3. Włącz Google Calendar API w sekcji API & Services.
2. Konfiguracja danych uwierzytelniających
1. Utwórz dane uwierzytelniające: OAuth 2.0 Client ID.
2. Pobierz plik JSON zawierający klucz autoryzacyjny.
3. Instalacja Google Client Library w PHP
composer require google/apiclient:^2.0
4. Autoryzacja użytkownika
Tworzymy plik auth.php:
<?php
require 'vendor/autoload.php';
session_start();
$client = new Google_Client();
$client->setAuthConfig('credentials.json');
$client->setRedirectUri('http://localhost/oauth2callback.php');
$client->addScope(Google_Service_Calendar::CALENDAR_EVENTS);
if (!isset($_GET['code'])) {
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
exit;
} else {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
header('Location: calendar.php');
exit;
}
5. Dodawanie wydarzenia
Tworzymy plik calendar.php:
<?php
require 'vendor/autoload.php';
session_start();
$client = new Google_Client();
$client->setAuthConfig('credentials.json');
$client->setAccessToken($_SESSION['access_token']);
$service = new Google_Service_Calendar($client);
$event = new Google_Service_Calendar_Event([
'summary' => 'Spotkanie testowe',
'start' => ['dateTime' => '2025-02-20T10:00:00', 'timeZone' => 'Europe/Warsaw'],
'end' => ['dateTime' => '2025-02-20T11:00:00', 'timeZone' => 'Europe/Warsaw'],
]);
$calendarId = 'primary';
$event = $service->events->insert($calendarId, $event);
echo 'Dodano wydarzenie: ' . $event->htmlLink;
Metoda 2: Konto usługi (Service Account)
1. Utworzenie konta usługi
1. W Google Cloud Console wybierz Service Account.
2. Pobierz plik JSON z kluczem autoryzacyjnym.
2. Udostępnienie kalendarza
1. Otwórz Google Calendar → Ustawienia.
2. Dodaj e-mail konta usługi i nadaj mu uprawnienia do edycji.
3. Instalacja biblioteki Google API
composer require google/apiclient:^2.0
4. Dodawanie wydarzenia
<?php
require 'vendor/autoload.php';
$client = new Google_Client();
$client->setAuthConfig('service-account.json');
$client->setScopes(Google_Service_Calendar::CALENDAR_EVENTS);
$service = new Google_Service_Calendar($client);
$event = new Google_Service_Calendar_Event([
'summary' => 'Automatyczne spotkanie',
'start' => ['dateTime' => '2025-02-21T09:00:00', 'timeZone' => 'Europe/Warsaw'],
'end' => ['dateTime' => '2025-02-21T10:00:00', 'timeZone' => 'Europe/Warsaw'],
]);
$calendarId = 'primary';
$event = $service->events->insert($calendarId, $event);
echo 'Dodano wydarzenie: ' . $event->htmlLink;
Podsumowanie
| Metoda | Kiedy używać? | Zalety | Wady |
|---|---|---|---|
| OAuth 2.0 | Gdy użytkownik dodaje wydarzenia do swojego kalendarza | Możliwość dodawania do różnych kont | Wymaga logowania |
| Konto usługi | Automatyczne dodawanie do jednego kalendarza (np. firmowego) | Nie wymaga logowania | Nie można dodać do kalendarzy użytkowników bez ich zgody |
Wybór metody zależy od Twoich potrzeb. Jeśli chcesz, aby użytkownicy dodawali wydarzenia do swoich kalendarzy – użyj OAuth 2.0. Jeśli potrzebujesz automatycznego dodawania wydarzeń do jednego kalendarza – wybierz konto usługi.
Powodzenia!
Komentarze
Prześlij komentarz