PHP: Wordpress-Plugin – Ich möchte ein Google-Kalenderereignis in einem bestimmten freigegebenen Google-Kalender erstell
Posted: 17 Jan 2025, 11:10
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:
Aber ich stecke an dem Punkt fest, an dem ich versucht habe, ein Ereignis zu erstellen (über den Postboten) und Folgendes zu erhalten:
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
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']
];
}
Code: Select all
{
"error": "Error getting access token.test"
}