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

Soziale Anmeldungen in PHP mit HybridAuth

Joseph Gordon-Levitt
Joseph Gordon-LevittOriginal
2025-02-18 11:26:10556Durchsuche

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>

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>

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>

authenticate Verwenden Sie die Methode

, um den Benutzer mit dem angegebenen Anbieter zu authentifizieren.

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.

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>

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

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

<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>
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>

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

Die
<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>
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>

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.

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>

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.

<code class="language-sql">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;</code>

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:

<code class="language-php"><?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 ...
}</code>
Führen Sie schließlich die schlanke Anwendung aus.

<code class="language-php">/**
     * 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() );
        }

    }</code>
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!

Stellungnahme:
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