OAuth-Client für PHP: Integration mit Google, GitHub und VK

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

OAuth-Client für PHP: Vollständige Anleitung zur Integration



In der modernen Webentwicklung ist OAuth (Open Authorization) zum De-facto-Standard für die Anmeldung über Drittanbieterdienste geworden. Der OAuth-Client für PHP ermöglicht es Ihren Benutzern, sich auf Ihrer Website über Google-, GitHub-, VKontakte-Konten und andere Anbieter anzumelden, ohne eine separate Registrierung durchführen zu müssen.



In diesem Artikel betrachten wir die beliebte PHP-Bibliothek League OAuth2 Client, die eine einheitliche Schnittstelle für die Arbeit mit verschiedenen OAuth2-Anbietern bietet.



Was ist OAuth2 und warum wird es benötigt?



OAuth2 ist ein Autorisierungsprotokoll, das es ermöglicht, den Zugriff auf Benutzerressourcen zu delegieren. Anstatt Passwörter von Drittanbieterdiensten zu speichern, erhalten Sie ein temporäres Zugriffstoken. Die wichtigsten Vorteile:



  • Sicherheit — Benutzerpasswörter werden nicht an Ihre Anwendung übermittelt
  • Komfort — Benutzer melden sich mit einem Klick an
  • Vertrauen — geringeres Risiko von Datenlecks
  • Zusätzliche Daten — E-Mail, Name, Avatar und andere Informationen können abgerufen werden


Installation der Bibliothek League OAuth2 Client



Für die Arbeit mit OAuth2 in PHP wird die Verwendung des offiziellen Pakets league/oauth2-client empfohlen. Die Installation erfolgt über Composer:



composer require league/oauth2-client


Für bestimmte Anbieter sind zusätzliche Pakete erforderlich. Zum Beispiel:



composer require league/oauth2-google      # Googlecomposer require league/oauth2-github       # GitHubcomposer require digitalcloud/oauth2-vk     # VK (inoffiziell)


Basisarchitektur des OAuth2-Clients



Jeder OAuth2-Client arbeitet nach folgendem Schema:



  1. Der Benutzer klickt auf die Schaltfläche „Mit Anbieter anmelden“
  2. Ihre Anwendung leitet den Benutzer zur Autorisierungsseite des Anbieters weiter
  3. Der Benutzer bestätigt den Zugriff
  4. Der Anbieter gibt einen Autorisierungscode an Ihre callback-URI zurück
  5. Ihre Anwendung tauscht den Code gegen ein Zugriffstoken ein
  6. Mit dem Token rufen Sie Benutzerdaten aus der API des Anbieters ab


Beispiel für die Integration mit Google



Betrachten wir ein vollständiges Arbeitsbeispiel für die Autorisierung über Google. Erstellen Sie zunächst ein Projekt in der Google Cloud Console und erhalten Sie eine Client-ID und ein Client-Geheimnis.



Dateistruktur:

  • config.php — Anwendungseinstellungen
  • login.php — Anmeldeseite
  • callback.php — Verarbeitung der Antwort von Google


config.php



<?php// OAuth-Einstellungen für Googledefine('GOOGLE_CLIENT_ID', 'ihre_client_id.apps.googleusercontent.com');define('GOOGLE_CLIENT_SECRET', 'ihr_client_secret');define('GOOGLE_REDIRECT_URI', 'https://ihre-website.de/callback.php');

// Bibliothek einbindenrequire_once 'vendor/autoload.php';

use League\\OAuth2\\Client\\Provider\\Google;

// Anbieter erstellen$provider = new Google([ 'clientId' => GOOGLE_CLIENT_ID, 'clientSecret' => GOOGLE_CLIENT_SECRET, 'redirectUri' => GOOGLE_REDIRECT_URI,]);?>


login.php



<?phprequire_once 'config.php';

// URL für die Autorisierung generieren$authUrl = $provider->getAuthorizationUrl([ 'scope' => ['email', 'profile'], // E-Mail und Profil anfordern]);

// State zum Schutz vor CSRF-Angriffen speichern$_SESSION['oauth2state'] = $provider->getState();

// Benutzer weiterleitenheader('Location: ' . $authUrl);exit;?>

<!-- Alternativ: Schaltfläche in HTML --><a href="<?= htmlspecialchars($authUrl) ?>">Mit Google anmelden</a>


callback

Empfehlungen