AddOn/Calender_Google_User/exampelV2/test.php hinzugefügt

This commit is contained in:
olinet 2025-11-11 22:14:02 +01:00
parent 9f6841052f
commit 00128ecde8
1 changed files with 100 additions and 0 deletions

View File

@ -0,0 +1,100 @@
<?php
// =======================
// Konfiguration
// =======================
define('CLIENT_SECRET', '...........'); // CLIENT_SECRET (Value)
define('CLIENT_ID', '........-....-....-....-............'); //DEINE-CLIENT-ID
define('TENANT_ID', '........-....-....-....-............'); //DEIN-TENANT-ID
define('REDIRECT_URI', 'https://meinserver.com/diese_datei/test.php');
define('SCOPES', 'offline_access Calendars.ReadWrite User.Read');
define('TOKEN_DIR', __DIR__ . '/tokens');
if (!is_dir(TOKEN_DIR)) mkdir(TOKEN_DIR);
// =======================
// Start
// =======================
session_start();
require_once 'GraphCalendarUserAuth.php';
// Initialisiere Auth-Klasse mit Client-ID, Secret, Tenant-ID & Redirect-URI
$graph = new GraphCalendarUserAuth(CLIENT_ID, CLIENT_SECRET, TENANT_ID, REDIRECT_URI);
// =======================
// Login-Flow
// =======================
if (isset($_GET['login'])) {
header('Location: ' . $graph->getLoginUrl());
exit;
}
// =======================
// Callback nach erfolgreichem Login
// =======================
if (isset($_GET['code'])) {
$user = $graph->handleCallback($_GET['code']);
$_SESSION['user_id'] = $user['id'];
$_SESSION['user_name'] = $user['displayName'];
$_SESSION['user_email'] = $user['email'];
header('Location: test.php');
exit;
}
// =======================
// Logout
// =======================
if (isset($_GET['logout'])) {
session_destroy();
header('Location: test.php');
exit;
}
// =======================
// Wenn eingeloggt → Access Token automatisch prüfen/erneuern
// =======================
if (isset($_SESSION['user_id'])) {
try {
// Automatische Prüfung + Refresh, falls nötig
$accessToken = $graph->getValidAccessToken($_SESSION['user_id']);
echo "<h1>Willkommen, {$_SESSION['user_name']}</h1>";
echo "<p><strong>Email:</strong> {$_SESSION['user_email']}</p>";
echo '<p><a href="?logout">Abmelden</a></p>';
echo '<p><strong>Zugriffstoken:</strong><br><code>' . htmlspecialchars($accessToken) . '</code></p>';
// Termine anzeigen
$events = $graph->getCalendarEvents(5);
echo "<h2>Deine nächsten Termine:</h2><ul>";
foreach ($events as $event) {
echo "<li>" . htmlspecialchars($event['subject']) . " (" . $event['start']['dateTime'] . " - " . $event['end']['dateTime'] . ")</li>";
}
echo "</ul>";
// Termin erstellen
$newEvent = $graph->createCalendarEvent(
"Test-Termin",
"2025-11-12T10:00:00",
"2025-11-12T11:00:00",
"Beschreibung für den Termin"
);
echo "<pre>Neuer Termin: ";
echo json_encode($newEvent);
echo "</pre>";
// Termin löschen (Event-ID aus $events oder $newEvent)
$deleted = $graph->deleteCalendarEvent($newEvent['id'] ?? '');
echo $deleted ? "Termin gelöscht" : "Löschen fehlgeschlagen";
} catch (Exception $e) {
echo "<p><strong>Fehler:</strong> {$e->getMessage()}</p>";
echo '<p><a href="?login">Neu anmelden</a></p>';
}
} else {
// Wenn kein Benutzer eingeloggt ist → Login-Link anzeigen
echo '<a href="?login">Mit Microsoft anmelden</a>';
}
?>