Sie möchten Dateien automatisiert von Ihrer PHP-Anwendung auf OneDrive hochladen? Mit der Microsoft Graph API ist das möglich! Diese Anleitung führt Sie Schritt für Schritt durch den Prozess, von der Einrichtung der Azure AD-Anwendung bis zum fertigen PHP-Code. Wir zeigen Ihnen, wie Sie die Graph API sicher und effizient nutzen, um Ihre Dateien in der Cloud zu speichern.
Voraussetzungen
Bevor wir loslegen, stellen Sie sicher, dass Sie folgende Voraussetzungen erfüllen:
- Einen Microsoft-Account mit Zugriff auf OneDrive.
- Ein Azure-Abonnement. (Für Testzwecke reicht ein kostenloses Konto.)
- Eine installierte PHP-Umgebung mit aktivierter cURL-Erweiterung.
- Composer (für die Installation von benötigten PHP-Bibliotheken).
- Grundlegende Kenntnisse in PHP und REST-APIs.
Schritt 1: Azure AD-Anwendung erstellen
Zuerst benötigen Sie eine Azure Active Directory (Azure AD) Anwendung. Diese Anwendung dient als Identität für Ihre PHP-Anwendung und erlaubt ihr, auf die Microsoft Graph API zuzugreifen. So erstellen Sie die Anwendung:
- Melden Sie sich im Azure-Portal an (https://portal.azure.com).
- Suchen Sie nach „Azure Active Directory” und wählen Sie den Dienst aus.
- Klicken Sie im Menü auf „App-Registrierungen„.
- Klicken Sie auf „Neue Registrierung„.
- Geben Sie einen Namen für Ihre Anwendung ein (z.B. „OneDriveUploader”).
- Wählen Sie unter „Unterstützte Kontotypen” die Option „Konten in diesem Organisationsverzeichnis nur (Einzelmandant)” oder „Konten in einem beliebigen Organisationsverzeichnis (Mehrinstanzen)” aus, je nach Ihren Bedürfnissen.
- Geben Sie unter „Umleitungs-URI (optional)” die URL ein, zu der der Benutzer nach der Authentifizierung umgeleitet wird. Für eine einfache PHP-Anwendung kann dies beispielsweise
http://localhost
oderhttp://localhost/callback.php
sein. Beachten Sie, dass Sie diese URL später in Ihrem PHP-Code verwenden müssen. - Klicken Sie auf „Registrieren„.
Nach der Registrierung der Anwendung benötigen Sie zwei wichtige Informationen:
- Anwendungs-ID (Client-ID): Diese finden Sie auf der Übersichtsseite Ihrer Anwendung.
- Verzeichnis-ID (Mandanten-ID): Ebenfalls auf der Übersichtsseite zu finden.
Notieren Sie sich diese IDs, da Sie sie später im PHP-Code benötigen.
Schritt 2: Client Secret erstellen
Um Ihre Anwendung zu authentifizieren, benötigen Sie ein Client Secret. So erstellen Sie es:
- Gehen Sie im Azure-Portal zu Ihrer App-Registrierung.
- Klicken Sie im Menü auf „Zertifikate & Geheimnisse„.
- Klicken Sie auf „Neuer geheimer Clientschlüssel„.
- Geben Sie eine Beschreibung für den Schlüssel ein (z.B. „OneDriveUploadSecret”).
- Wählen Sie die Gültigkeitsdauer des Schlüssels aus.
- Klicken Sie auf „Hinzufügen„.
Wichtig: Der Wert des Client Secrets wird nur einmal angezeigt. Kopieren Sie ihn sofort und speichern Sie ihn sicher. Sie benötigen diesen Wert ebenfalls im PHP-Code. Wenn Sie den Wert verlieren, müssen Sie einen neuen Schlüssel erstellen.
Schritt 3: API-Berechtigungen konfigurieren
Ihre Anwendung benötigt die richtigen API-Berechtigungen, um Dateien auf OneDrive hochladen zu können. Konfigurieren Sie diese folgendermaßen:
- Gehen Sie im Azure-Portal zu Ihrer App-Registrierung.
- Klicken Sie im Menü auf „API-Berechtigungen„.
- Klicken Sie auf „Berechtigung hinzufügen„.
- Wählen Sie „Microsoft Graph” aus.
- Wählen Sie „Delegierte Berechtigungen” aus (da die Operation im Namen des Benutzers ausgeführt wird).
- Suchen Sie nach der Berechtigung „Files.ReadWrite.All” und aktivieren Sie das Kontrollkästchen.
- Klicken Sie auf „Berechtigungen hinzufügen„.
- Klicken Sie auf „Administratorzustimmung für [Ihr Mandantenname] erteilen” und bestätigen Sie die Aktion. Dies ist notwendig, damit die Anwendung im Namen aller Benutzer in Ihrem Mandanten agieren kann. Wenn Sie ein persönliches Konto verwenden, ist dieser Schritt möglicherweise nicht erforderlich.
Schritt 4: PHP-Code erstellen
Jetzt kommt der spannende Teil: der PHP-Code. Erstellen Sie eine neue PHP-Datei (z.B. upload.php
) und fügen Sie den folgenden Code ein. Passen Sie die Platzhalter entsprechend Ihren Azure AD-Anmeldeinformationen und Dateipfad an.
<?php
require 'vendor/autoload.php'; // Composer Autoloader
use MicrosoftGraphGraph;
use MicrosoftGraphModel;
// Konfiguration
$clientId = 'IHRE_CLIENT_ID'; // Ersetzen Sie dies durch Ihre Client-ID
$clientSecret = 'IHR_CLIENT_SECRET'; // Ersetzen Sie dies durch Ihr Client Secret
$tenantId = 'IHRE_MANDANTEN_ID'; // Ersetzen Sie dies durch Ihre Mandanten-ID
$redirectUri = 'http://localhost'; // Ersetzen Sie dies durch Ihre Redirect-URI
$filePath = '/path/to/your/file.txt'; // Ersetzen Sie dies durch den Pfad zur Datei, die Sie hochladen möchten
$fileName = basename($filePath); //Dateiname extrahieren
$driveId = 'MEINE_ONEDRIVE_ID'; // Optional: Die ID des OneDrive, auf das Sie zugreifen möchten. Lassen Sie es leer, um den Standardwert zu verwenden.
// OAuth 2.0-Konfiguration
$guzzle = new GuzzleHttpClient();
$url = 'https://login.microsoftonline.com/' . $tenantId . '/oauth2/v2.0/token';
$params = [
'client_id' => $clientId,
'client_secret' => $clientSecret,
'grant_type' => 'client_credentials',
'scope' => 'https://graph.microsoft.com/.default',
];
try {
$response = $guzzle->post($url, ['form_params' => $params]);
$token = json_decode($response->getBody()->getContents());
$accessToken = $token->access_token;
} catch (GuzzleHttpExceptionGuzzleException $e) {
die("Fehler beim Abrufen des Zugriffstokens: " . $e->getMessage());
}
// Microsoft Graph Client initialisieren
$graph = new Graph();
$graph->setAccessToken($accessToken);
// Pfad zum Hochladen festlegen
$uploadPath = '/drive/root:/' . $fileName . ':/content'; // Upload in den Root-Ordner
//Optional: Upload in einen bestimmten Ordner
// $uploadPath = '/drives/'.$driveId.'/root:/Pfad/zum/Ordner/'.$fileName.':/content';
// Datei hochladen
try {
$fileContent = fopen($filePath, 'r');
$response = $graph->createRequest('PUT', $uploadPath)
->upload($fileContent);
echo "Datei erfolgreich hochgeladen!";
} catch (MicrosoftGraphExceptionGraphException $e) {
echo "Fehler beim Hochladen der Datei: " . $e->getMessage();
}
Erklärungen zum Code:
require 'vendor/autoload.php';
: Lädt den Autoloader von Composer, der die benötigten Klassen und Bibliotheken einbindet.use MicrosoftGraphGraph;
unduse MicrosoftGraphModel;
: Importiert die benötigten Klassen aus der Microsoft Graph SDK.$clientId
,$clientSecret
,$tenantId
,$redirectUri
,$filePath
: Platzhalter für Ihre Azure AD-Anmeldeinformationen und den Dateipfad. Ersetzen Sie diese durch die tatsächlichen Werte.- OAuth 2.0-Authentifizierung: Der Code verwendet den Client Credentials Flow, um ein Access Token von Microsoft zu erhalten. Dieser Flow eignet sich für serverseitige Anwendungen, die ohne Benutzerinteraktion auf die Graph API zugreifen müssen.
$graph = new Graph();
: Initialisiert den Microsoft Graph Client.$graph->setAccessToken($accessToken);
: Setzt das Access Token für den Graph Client.$uploadPath
: Gibt den Pfad auf OneDrive an, in den die Datei hochgeladen werden soll./drive/root:/
bezieht sich auf den Root-Ordner Ihres OneDrive. Sie können den Pfad anpassen, um die Datei in einen bestimmten Ordner hochzuladen. Beachten Sie die korrekte Syntax!$graph->createRequest('PUT', $uploadPath)->upload($fileContent);
: Erstellt eine PUT-Anfrage an die Graph API und lädt den Inhalt der Datei hoch.- Fehlerbehandlung: Der Code enthält Try-Catch-Blöcke, um Fehler während des Abrufens des Access Tokens und des Hochladens der Datei abzufangen und anzuzeigen.
Schritt 5: Composer verwenden, um die Microsoft Graph SDK zu installieren
Die Microsoft Graph SDK ist eine PHP-Bibliothek, die die Interaktion mit der Graph API vereinfacht. Installieren Sie sie mit Composer:
- Öffnen Sie ein Terminal oder eine Befehlszeile im Verzeichnis Ihrer PHP-Datei.
- Führen Sie den Befehl
composer require microsoft/microsoft-graph
aus.
Dieser Befehl lädt die Microsoft Graph SDK und ihre Abhängigkeiten herunter und speichert sie im vendor
-Ordner. Der vendor/autoload.php
-Datei wird benötigt, um die Klassen der SDK einzubinden.
Schritt 6: PHP-Skript ausführen
Speichern Sie die upload.php
-Datei und führen Sie sie über Ihre PHP-Umgebung aus. Wenn alles korrekt konfiguriert ist, sollte die Datei auf Ihr OneDrive hochgeladen werden.
Hinweis: Achten Sie darauf, dass Ihr Webserver oder Ihre PHP-CLI Zugriff auf die Datei hat, die Sie hochladen möchten.
Fehlerbehebung
Sollten Probleme auftreten, hier einige Tipps zur Fehlerbehebung:
- Überprüfen Sie Ihre Azure AD-Anmeldeinformationen: Stellen Sie sicher, dass die Client-ID, das Client Secret und die Mandanten-ID korrekt sind.
- Überprüfen Sie die API-Berechtigungen: Stellen Sie sicher, dass Ihre Anwendung die Berechtigung
Files.ReadWrite.All
hat und dass Sie die Administratorzustimmung erteilt haben. - Überprüfen Sie den Dateipfad: Stellen Sie sicher, dass der Dateipfad korrekt ist und dass die Datei existiert und lesbar ist.
- Überprüfen Sie die Redirect-URI: Stellen Sie sicher, dass die Redirect-URI in Ihrer Azure AD-Anwendung mit der Redirect-URI in Ihrem PHP-Code übereinstimmt.
- Lesen Sie die Fehlermeldungen: Die Microsoft Graph API gibt detaillierte Fehlermeldungen zurück, die Ihnen bei der Diagnose von Problemen helfen können.
- Aktivieren Sie die PHP-Fehleranzeige: Stellen Sie sicher, dass die PHP-Fehleranzeige aktiviert ist, um Fehler und Warnungen im PHP-Code zu sehen.
Fazit
Mit dieser Anleitung können Sie Dateien automatisiert von Ihrer PHP-Anwendung auf OneDrive hochladen. Die Microsoft Graph API bietet eine leistungsstarke und flexible Möglichkeit, auf OneDrive zuzugreifen und Dateien zu verwalten. Experimentieren Sie mit den verschiedenen Funktionen der Graph API, um Ihre Anwendung noch besser zu machen.