Page 1 of 1

PHP: Wordpress-Plugin – Ich möchte ein Google-Kalenderereignis in einem bestimmten freigegebenen Google-Kalender erstell

Posted: 17 Jan 2025, 11:10
by Anonymous
Ich wollte ein WordPress-Plugin für unser Musikorchester erstellen. In diesem WP-Plugin wollte ich in der Lage sein, Ereignisse einfach zum Google-Kalender hinzuzufügen. Wir verwenden einen gemeinsamen Google-Kalender. Ich habe hier einige Beiträge über Möglichkeiten gelesen und bin bei diesem Code zur Handhabung von Google Kalender gelandet:

Code: Select all

 // 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']
];
}
Aber ich stecke an dem Punkt fest, an dem ich versucht habe, ein Ereignis zu erstellen (über den Postboten) und Folgendes zu erhalten:

Code: Select all

{
"error": "Error getting access token.test"
}
Ich habe ein Dienstkonto für Google API. Ich habe credential.json mit allen relevanten Daten. Ich habe kein OAuth, aber nach dem, was ich gelesen habe, brauche ich das für meinen Anwendungsfall nicht