I wanted to create wordpress plugin for our music orchestra. In that wp plugin i wanted to be able to easily add event to google calendar. We use 1 shared google calendar. I have read some posts here about possibilities and ended up with this code handling google calendar:
// Přidání funkce pro přidání události do Google Kalendáře
function add_event_to_google_calendar($event_details) {
error_log_with_timestamp('add_event_to_google_calendar called');
$credentials_path = plugin_dir_path(__FILE__) . 'credential.json'; // Ujistěte se, že cesta je správná
if (!file_exists($credentials_path)) {
error_log_with_timestamp('Credentials file not found: ' . $credentials_path);
return [
'error' => 'Credentials file not found.'
];
}
error_log_with_timestamp('Credentials file found: ' . $credentials_path);
// Načtení přihlašovacích údajů
$credentials = json_decode(file_get_contents($credentials_path), true);
if (json_last_error() !== JSON_ERROR_NONE) {
error_log_with_timestamp('Error decoding credentials file: ' . json_last_error_msg());
return [
'error' => 'Error decoding credentials file.'
];
}
// Získání přístupového tokenu
$token = get_google_access_token($credentials);
if (isset($token['error'])) {
error_log_with_timestamp('Error getting access token: ' . $token['error']);
return [
'error' => 'Error getting access token.test',//!!!!THIS LAST Error IF I USE POSTMAN!!!
'details' => $token['error']
];
}
// Vytvoření události pomocí HTTP požadavku
$calendarId = 'primary';
$url = "https://www.googleapis.com/calendar/v3/calendars/$calendarId/events";
$headers = [
'Authorization: Bearer ' . $token['access_token'],
'Content-Type: application/json'
];
$response = http_post($url, json_encode($event_details), $headers);
if ($response['status_code'] !== 200) {
error_log_with_timestamp('Error adding event to Google Calendar: ' . $response['body']);
return [
'error' => 'Error adding event to Google Calendar.',
'details' => $response['body']
];
}
$event = json_decode($response['body'], true);
error_log_with_timestamp('Event added to Google Calendar: ' . $event['id']);
return [
'success' => true,
'event_id' => $event['id']
];
}
But im stuck at point when i trie to create event ( via postman) and getting :
{
"error": "Error getting access token.test"
}
I have service account for google api. i have credetial.json with all relevant data.. I dont have OAuth, but from what i read i dont need that for my usecase