Mit vielen modernen Websites können sich Benutzer über ihre sozialen Netzwerkkonten anmelden. Mit der SitePoint -Community können Benutzer beispielsweise mit ihren Facebook-, Twitter-, Google-, Yahoo- oder Github -Konten anmelden, ohne sich für ein neues Konto zu registrieren.
In diesem Tutorial wird HybridAuth eingeführt - eine PHP -Bibliothek, die die Konstruktion sozialer Loginfunktionen vereinfacht.
HybridAuth fungiert als abstrakte API zwischen Anwendungen und verschiedenen sozialen APIs und Identitätsanbietern.
Schlüsselpunkte
Installation
Komponist wird empfohlen, HybridAuth zu installieren. Wir werden Slim auch als Grundlage für die Probenanwendung verwenden.
<code>{ "require": { "slim/slim": "2.*", "hybridauth/hybridauth": "2.3.0" } }</code>
Soziale Login mit HybridAuth
Kopieren Sie die /vendor/hybridauth/hybridauth/hybridauth
und config.php
(HybridAuth -Endpunkt -Dateien) in den Ordner index.php
und
index.php
benennen Sie die hybrid.php
-Datei in index.php
um, da
config.php
Füllen Sie die Datei
http://slim.local
Wenn Sie beispielsweise Benutzer über Facebook, Google und Twitter auf Ihrer Website anmelden möchten, sollte Ihr Profil so aussehen. Meine Anwendungs -URL ist
<code>return [ "base_url" => "http://slim.local/", "providers" => [ "Google" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], ], "Facebook" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], "trustForwarded" => false ], "Twitter" => [ "enabled" => true, "keys" => [ "key" => "", "secret" => "" ] ], ], "debug_mode" => true, "debug_file" => "bug.txt", ];</code>
base_url
Hinweis: Der Parameter hybrid.php
muss in diesem Fall auf die HybridAuth -Endpoint -Datei
Weitere Informationen finden Sie in der Dokumentation zur HybridAuth -Konfiguration.
Laden Sie als nächstes den Anbieter -Autoloader und instanziieren Sie die Klasse.
<code>require 'vendor/autoload.php'; $hybridauth = new Hybrid_Auth( 'config.php' );</code>
authenticate
Verwenden Sie die Methode
für Facebook:
<code>$adapter = $hybridauth->authenticate( "Facebook" );</code>
für Twitter:
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>
für Google:
<code>$adapter = $hybridauth->authenticate( "Google" );</code>
Die an authenticate()
übergebenen Parameter müssen mit der Anbieter -Array -Taste in der Datei config.php
übereinstimmen.
, um die Profildaten des Benutzers abzurufen. getUserProfile()
<code>{ "require": { "slim/slim": "2.*", "hybridauth/hybridauth": "2.3.0" } }</code>
ist ein Objekt, das die zurückgegebenen Benutzerprofildaten enthält. $user_profile
-Datei von GitHub.php
zu einem Ort in der Anwendung (in diesem Fall das Anbieterverzeichnis). Laden Sie die Datei mit einem Anbieter -Wrapper, wobei vendor/hybridauth/hybridauth/additional-providers/hybridauth-github/Providers
der Pfad zur GitHub -Datei und path
der Name seiner PHP -Klasse ist. class
<code>return [ "base_url" => "http://slim.local/", "providers" => [ "Google" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], ], "Facebook" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], "trustForwarded" => false ], "Twitter" => [ "enabled" => true, "keys" => [ "key" => "", "secret" => "" ] ], ], "debug_mode" => true, "debug_file" => "bug.txt", ];</code>
-Methode von HybridAuth, um Benutzer mit GitHub zu authentifizieren, wie unten gezeigt: authenticate()
<code>require 'vendor/autoload.php'; $hybridauth = new Hybrid_Auth( 'config.php' );</code>
Implementierung der sozialen Anmeldung
Normalerweise verwendet jede Website mit einem Login- und Registrierungssystem die E -Mail -Adresse oder den Benutzernamen des Benutzers, um ihr Konto zu identifizieren und anzumelden. Wenn Sie planen, soziale Anmeldung zu implementieren, wird empfohlen, den Benutzernamen oder die E -Mail des Benutzers zur Authentifizierung nicht zu verwenden.Einer der Gründe, gegen diese Praxis einzuwenden, ist, dass Twitter beispielsweise die E -Mail -Adresse des Benutzers nicht zurückgibt, die durch sie authentifiziert wurde. Das heißt, die zurückgegebenen Profildaten enthalten nicht die E -Mail des Benutzers.
Die meisten, wenn nicht alle, sozialen Anbieter wie Facebook, Twitter, Google, LinkedIn und sogar GitHub geben nach der Autorisierung eine eindeutige Benutzer -ID -Nummer zurück.
Melden Sie sich nicht mit der E -Mail des Benutzers im Konto des Benutzers an, sondern verwenden Sie die vom Social Provider zurückgegebene Kennung, wie unten gezeigt: Erstellen Sie ein Benutzerkonto, wenn der Benutzer kein Konto hat. Konto gehen auf die Website.
eine Demo -Anwendung schreiben
Wir werden das Slim PHP -Framework verwenden, um eine einfache Webanwendung zu erstellen, um praktische Beispiele für die Implementierung eines sozialen Anmeldes mit HybridAuth zu demonstrieren.Ich gehe davon aus, dass Sie Hybridauth- und Slim -Frameworks installiert haben. Ansonsten finden Sie den obigen Installationshandbuch.
Anwendungsstruktur
<code>$adapter = $hybridauth->authenticate( "Facebook" );</code>
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>
Der Dateinamespace ist Modell, gefolgt von der Klassendefinition und dem Konstruktor.
<code>$adapter = $hybridauth->authenticate( "Google" );</code>
Methode gibt true zurück, wenn die Kennung (Benutzeridentifikationsnummer) bereits in der Datenbank vorhanden ist, ansonsten false zurückgibt. identifier_exists
<code>$user_profile = $adapter->getUserProfile();</code>
Methode Einfügen Benutzerprofildaten in die Datenbank ein. register_user
<code>"Github" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], "wrapper" => [ "path" => "providers/GitHub.php", "class" => "Hybrid_Providers_GitHub" ] ]</code>
-Methode fügt die erstellte Benutzersitzung der HybridAuth -Sitzung hinzu (erstellt, nachdem der Anbieter den Benutzer erfolgreich autorisiert). login_user
<code>$adapter = $hybridauth->authenticate( "Github" );</code>
Methode löschen oder zerstören Sie die Sitzung eines Benutzers beim Klicken auf den Link zur Abmeldung. logout_user
<code>|-scr/ |----App_Model.php |-templates/ |----login.php |----welcome.php |-vendor/ |-composer.json |-config.php |-hybrid.php |-index.php |-.htaccess</code>
<code>{ "require": { "slim/slim": "2.*", "hybridauth/hybridauth": "2.3.0" } }</code>
Registrieren Sie PSR-4 Autoloader für die Modellklasse, indem Sie den folgenden Code zu Ihrer Composer.json-Datei hinzufügen.
<code>return [ "base_url" => "http://slim.local/", "providers" => [ "Google" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], ], "Facebook" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], "trustForwarded" => false ], "Twitter" => [ "enabled" => true, "keys" => [ "key" => "", "secret" => "" ] ], ], "debug_mode" => true, "debug_file" => "bug.txt", ];</code>
reiten Sie composer dump-autoload
aus, um die vendor/autoload.php
Datei zu regenerieren.
Komponist in Anwendung index.php
laden Sie die Datei automatisch die Datei und instanziiert Slim.
<code>require 'vendor/autoload.php'; $hybridauth = new Hybrid_Auth( 'config.php' );</code>
Erstellen Sie ein Verzeichnis namens Vorlagen, um alle Vorlagendateien zu speichern, und registrieren oder konfigurieren Sie es in Slim wie folgt:
<code>$adapter = $hybridauth->authenticate( "Facebook" );</code>
Erstellen Sie eine schlanke Datenbank -Singleton -Ressource, die die Datenbankverbindungsinstanz zurückgibt, wenn sie aufgerufen werden.
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>
Eine weitere Singleton -Ressource, die eine HybridAuth -Instanz zurückgibt, wird ebenfalls erstellt.
<code>$adapter = $hybridauth->authenticate( "Google" );</code>
instanziieren Sie die Anwendungsmodellklasse, indem Sie eine Datenbankverbindung als Parameter übergeben.
<code>$user_profile = $adapter->getUserProfile();</code>
Die folgende authenticate
-Funktion, wenn der Benutzer als Parameter hinzugefügt wird, wenn der Benutzer nicht angemeldet ist, wird er auf die Anmeldeseite umgeleitet.
<code>"Github" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], "wrapper" => [ "path" => "providers/GitHub.php", "class" => "Hybrid_Providers_GitHub" ] ]</code>
Umleitet den angemeldeten Benutzer auf die Anmeldeseite, wenn er auf die Homepage oder die Indexseite der App zugreift.
<code>$adapter = $hybridauth->authenticate( "Github" );</code>
Folgendes ist die Routing -Definition für soziale Anmeldungslinks. Das heißt, wenn der Link http://slim.local/login/facebook
klickt wird, leitet HybridAuth den Benutzer zur Autorisierung auf Facebook weiter. Gleiches gilt für Twitter http://slim.local/login/twitter
, Google http://slim.local/login/google
und alle anderen unterstützten Anbieter.
<code>|-scr/ |----App_Model.php |-templates/ |----login.php |----welcome.php |-vendor/ |-composer.json |-config.php |-hybrid.php |-index.php |-.htaccess</code>
Aufrufen der authenticate()
-Methode von HybridAuth leitet den Benutzer in den angegebenen sozialen Anbieter um.
Nach erfolgreicher Autorisierung füllt die Variable $user_profile
die Benutzerprofildaten.
rufen Sie die Methode identifier_exists()
auf, um zu überprüfen, ob die Benutzerkennung in der Datenbank vorliegt. Wenn wahr, meldet sich der Benutzer auf der Website an. Andernfalls wird ein Konto für den Benutzer erstellt und der Benutzer wird angemeldet.
Dies ist der Code, um die Route auszuzeichnen.
CREATE TABLE IF NOT EXISTS `users` ( `id` int(10) NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), `identifier` varchar(50) NOT NULL, UNIQUE KEY `identifier` (`identifier`), `email` varchar(50) DEFAULT NULL, `first_name` varchar(20) DEFAULT NULL, `last_name` varchar(20) DEFAULT NULL, `avatar_url` varchar(255) ) ENGINE=InnoDB;
Die in der Modellklasse diskutierte logout_user
-Methode, die wir in der Modellklasse besprochen haben, wird aufgerufen, um die Benutzersitzung zu zerstören und sich auch vom Verbindungsanbieter des Benutzers abzuloggen. Hybrid_Auth::logoutAllProviders()
<?php namespace Model; class App_Model { /** @var object Database connection */ private $conn; /** * Instantiate the model class. * * @param object $db_connection DB connection */ public function __construct(\PDO $db_connection) { $this->conn = $db_connection; } // ... rest of the methods ... }
/** * Check if a HybridAuth identifier already exists in DB * * @param int $identifier * * @return bool */ public function identifier_exists($identifier) { try { $sql = 'SELECT identifier FROM users'; $query = $this->conn->query($sql); $result = $query->fetchAll(\PDO::FETCH_COLUMN, 0); return in_array($identifier, $result); } catch ( \PDOException $e ) { die( $e->getMessage() ); } }
Schlussfolgerung
In diesem Artikel haben wir gelernt, wie man soziale Anmeldungsfunktionen in Websites integriert, indem wir die leistungsstarke und robuste HybridAuth -PHP -Bibliothek verwenden.Wenn Sie Fragen oder Beiträge haben, teilen Sie uns dies bitte in den Kommentaren mit.
FAQ (FAQ) für die soziale Anmeldung mit PHP und HybridAuth
HybridAuth ist eine beliebte Open -Source -PHP -Bibliothek. Sie können Webentwickler auf einfache Weise soziale Anwendungen erstellen, indem sie eine einfache Möglichkeit bieten, Benutzer über ihre Social -Media -Konten zu authentifizieren. HybridAuth fungiert als abstrakte API zwischen Anwendungen und verschiedenen sozialen APIs und Identitätsanbietern wie Facebook, Twitter und Google. Es funktioniert durch Integration in vorhandene Anmeldesysteme in PHP -Anwendungen und das Hinzufügen von sozialen Anmeldungsfunktionen.
hybridAuth kann über Composer (das Abhängigkeitsmanagement -Tool in PHP) installiert werden. Nach der Installation müssen Sie es konfigurieren, indem Sie den Anbieter einrichten, den Sie verwenden möchten (soziales Netzwerk). Jeder Anbieter benötigt eine einzigartige Reihe von Parametern wie Schlüssel und Schlüssel, die Sie durch das Erstellen von Anwendungen auf den Entwicklerplattformen jedes sozialen Netzwerks erhalten können.
HybridAuth ist sehr sicher, da es OAuth verwendet, einen Open -Access -Delegiertenstandard. OAuth bietet einen sicheren ausgewiesenen Zugriff, was bedeutet, dass Benutzer den Websites die Berechtigung erteilen können, auf ihre Informationen auf anderen Websites zugreifen zu können, ohne ihnen ein Kennwort zu geben. Dies macht HybridAuth zu einer sicheren Option für die soziale Anmeldung.
Ja, HybridAuth kann auf mehreren Websites verwendet werden. Sie müssen nur die richtige Callback -URL -Konfigurationsbibliothek für jede Website verwenden. Dies macht es zu einer flexiblen Lösung für Entwickler, die mehrere Websites verwalten.
HybridAuth verfügt über ein integriertes Fehlerbehandlungssystem. Wenn ein Fehler auftritt, wird eine Ausnahme ausgelöst, die Sie basierend auf den Fehlerbehandlungsrichtlinien Ihrer Anwendung fangen und verarbeiten können. Dies erleichtert das Debuggen und Behebung von Problemen.
Ja, Sie können das Aussehen und den Stil der sozialen Login -Taste anpassen. HybridAuth bietet soziale Anmeldungsfunktionen, aber das Design und das Layout der Schaltflächen liegt ganz bei Ihnen.
Das Aktualisieren von HybridAuth ist so einfach wie ein Befehl im Komponisten. Dies stellt sicher, dass Sie immer die neueste Version mit allen Sicherheitspatches und Updates haben.
Ja, HybridAuth ist kein Framework und kann mit jedem PHP -Framework verwendet werden. Dies macht es zu einer vielseitigen Wahl für Entwickler, die verschiedene PHP -Frameworks verwenden.
Das Testen der sozialen Anmeldung lokal kann schwierig sein, da soziale Netzwerke gültige Rückruf -URLs erfordern. Sie können Ihren lokalen Server jedoch mithilfe von Tools wie NGROK dem Internet aussetzen und diese URL als Callback -URL verwenden.
Nein, HybridAuth ist für die soziale Anmeldung ausgelegt. Für eine herkömmliche E -Mail- und Kennwortauthentifizierung müssen Sie andere PHP -Bibliotheken verwenden oder Ihr eigenes Authentifizierungssystem erstellen.
Die Ausgabe behält die Originalbildformatierung und die Platzierung bei.
Das obige ist der detaillierte Inhalt vonSoziale Anmeldungen in PHP mit HybridAuth. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!