Heim > Backend-Entwicklung > PHP-Tutorial > Soziale Anmeldungen in PHP mit HybridAuth

Soziale Anmeldungen in PHP mit HybridAuth

Joseph Gordon-Levitt
Freigeben: 2025-02-18 11:26:10
Original
549 Leute haben es durchsucht

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.

Social Logins in PHP with HybridAuth

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

  • HybridAuth ist eine PHP -Bibliothek, mit der die Integration der sozialen Anmeldung in Ihre Website vereinfacht und als mittlere Schicht zwischen Ihrer Anwendung und verschiedenen sozialen APIs fungiert.
  • Es wird empfohlen, HybridAuth über Komponist zu installieren, und für jedes soziale Netzwerk wie Facebook, Google und Twitter sind bestimmte Anmeldeinformationen erforderlich, um ordnungsgemäß zu funktionieren.
  • Diese Bibliothek verwendet OAuth für einen sicheren Zugriff und stellt sicher, dass Benutzeranmeldeinformationen während der Authentifizierung geschützt sind.
  • HybridAuth ermöglicht benutzerdefinierte Benutzerauthentifizierungsprozesse, die sich nicht auf E -Mails oder Benutzernamen verlassen, sondern die Verwendung von eindeutigen Kennungen, die von sozialen Netzwerken bereitgestellt werden.
  • Dieses Tutorial enthält eine praktische Demonstration mit dem Slim PHP-Framework, in dem die Schritte von der Einrichtung einer Umgebung zum Schreiben einer vollwertigen Demo-Anwendung beschrieben werden, die die Registrierung, Anmeldung und Anmeldung von Benutzer durch ein soziales Netzwerk abwickelt.

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Soziale Login mit HybridAuth

Kopieren Sie die /vendor/hybridauth/hybridauth/hybridauth und config.php (HybridAuth -Endpunkt -Dateien) in den Ordner index.php und

(HybridAuth -Endpunkt -Dateien) in Ihren Projektordner.

index.php benennen Sie die hybrid.php -Datei in index.php um, da

im Slim -Framework für unsere Demo -Anwendungslogik verwendet wird.

config.php Füllen Sie die Datei

mit Ihrer App (z. B. Facebook, Twitter -App) Anmeldeinformationen.

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

base_url Hinweis: Der Parameter hybrid.php muss in diesem Fall auf die HybridAuth -Endpoint -Datei

verweisen.

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

authenticate Verwenden Sie die Methode

, um den Benutzer mit dem angegebenen Anbieter zu authentifizieren.

für Facebook:
<code>$adapter = $hybridauth->authenticate( "Facebook" );</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

für Twitter:
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

für Google:
<code>$adapter = $hybridauth->authenticate( "Google" );</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die an authenticate() übergebenen Parameter müssen mit der Anbieter -Array -Taste in der Datei config.php übereinstimmen.

Verwenden Sie nach der Authentifizierung die Methode

, um die Profildaten des Benutzers abzurufen. getUserProfile()

Die Variable
<code>{
    "require": {
        "slim/slim": "2.*",
        "hybridauth/hybridauth": "2.3.0"
    }
}</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

ist ein Objekt, das die zurückgegebenen Benutzerprofildaten enthält. $user_profile

mehr soziale Anbieter

Um weitere Anbieter hinzuzufügen, wie z. B. GitHub, kopieren Sie die

-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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Verwenden Sie die

-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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Dies ist der SQL für die Datenbanktabelle.

<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
ein Anwendungsmodell schreiben

Der gesamte Code für das Anwendungsmodell sollte in der Datei app_model.php im SRC -Ordner platziert werden.

Der Dateinamespace ist Modell, gefolgt von der Klassendefinition und dem Konstruktor.

<code>$adapter = $hybridauth->authenticate( "Google" );</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

Methode Einfügen Benutzerprofildaten in die Datenbank ein. register_user

Die
<code>"Github"   => [
    "enabled" => true,
    "keys"    => [
        "id"     => "",
        "secret" => ""
    ],
    "wrapper" => [ "path" => "providers/GitHub.php", "class" => "Hybrid_Providers_GitHub" ]
]</code>
Nach dem Login kopieren
Nach dem Login kopieren

-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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren
Zuletzt gibt die Getter -Methode den Namen, die E -Mail und die Avatar -URL des Benutzers zurück.

<code>{
    "require": {
        "slim/slim": "2.*",
        "hybridauth/hybridauth": "2.3.0"
    }
}</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

reiten Sie composer dump-autoload aus, um die vendor/autoload.php Datei zu regenerieren.

Anwendungslogik

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Erstellen Sie eine schlanke Datenbank -Singleton -Ressource, die die Datenbankverbindungsinstanz zurückgibt, wenn sie aufgerufen werden.

<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Eine weitere Singleton -Ressource, die eine HybridAuth -Instanz zurückgibt, wird ebenfalls erstellt.

<code>$adapter = $hybridauth->authenticate( "Google" );</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

instanziieren Sie die Anwendungsmodellklasse, indem Sie eine Datenbankverbindung als Parameter übergeben.

<code>$user_profile = $adapter->getUserProfile();</code>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

Umleitet den angemeldeten Benutzer auf die Anmeldeseite, wenn er auf die Homepage oder die Indexseite der App zugreift.

<code>$adapter = $hybridauth->authenticate( "Github" );</code>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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;
Nach dem Login kopieren

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()

Route der Begrüßungsseite, die vom Benutzer nach dem Anmelden eingeleitet wurde:

<?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 ...
}
Nach dem Login kopieren
Führen Sie schließlich die schlanke Anwendung aus.

/**
     * 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() );
        }

    }
Nach dem Login kopieren
Siehe das Github -Repository der Anwendung für den vollständigen Quellcode.

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

Was ist HybridAuth und wie wird es mit PHP für soziale Anmeldung verwendet?

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.

Wie installiere und konfiguriere ich HybridAuth in meiner PHP -Anwendung?

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.

Was ist die Sicherheitsniveau von HybridAuth für soziale Anmeldung?

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.

Kann ich HybridAuth für soziale Anmeldung auf mehreren Websites verwenden?

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.

Wie kann man mit Fehlern in HybridAuth umgehen?

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.

Kann ich das Aussehen und den Stil von HybridAuths sozialem Login -Taste anpassen?

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.

Wie aktualisiere ich die Hybridauth -Bibliothek in meiner PHP -Anwendung?

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.

Kann ich HybridAuth mit anderen PHP -Frameworks verwenden?

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.

Wie testet ich Hybridauths soziale Anmeldung in meiner lokalen Entwicklungsumgebung?

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.

Kann ich Benutzer mit nicht-sozialen Konten wie E-Mails und Passwörtern mit HybridAuth authentifizieren?

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage