De nombreux sites Web modernes permettent aux utilisateurs de se connecter via leurs comptes de réseaux sociaux. Par exemple, la communauté SitePoint permet aux utilisateurs de se connecter avec leurs comptes Facebook, Twitter, Google, Yahoo ou GitHub sans s'inscrire à un nouveau compte.
Ce tutoriel introduira Hybridauth - une bibliothèque PHP qui simplifie la construction de capacités de connexion sociales.
Hybridauth agit comme une API abstraite entre les applications et diverses API sociaux et fournisseurs d'identité.
Points clés
- HybridUuth est une bibliothèque PHP con?ue pour simplifier l'intégration de la connexion sociale dans votre site Web et agir comme la couche intermédiaire entre votre application et diverses API sociaux.
- Il est recommandé d'installer HybridAuth via Composer, et des informations d'identification spécifiques sont nécessaires pour chaque réseau social tel que Facebook, Google et Twitter pour fonctionner correctement.
- Cette bibliothèque utilise OAuth pour un accès sécurisé, garantissant que les informations d'identification des utilisateurs sont protégées lors de l'authentification.
- HybridUuth permet des processus d'authentification des utilisateurs personnalisés, ne s'appuyant pas sur des e-mails ou des noms d'utilisateur, mais en utilisant des identifiants uniques fournis par les réseaux sociaux.
- Ce didacticiel fournit une démonstration pratique à l'aide du framework Slim PHP, détaillant les étapes de la mise en place d'un environnement à la rédaction d'une application de démonstration entièrement traduite qui gère l'enregistrement, la connexion et la déconnexion des utilisateurs via un réseau social.
Installation
Le compositeur est recommandé pour installer Hybridauth. Nous utiliserons également Slim comme base de l'échantillon d'application.
<code>{ "require": { "slim/slim": "2.*", "hybridauth/hybridauth": "2.3.0" } }</code>
Connexion sociale avec hybriduth
Pour utiliser HybridAuth, copiez le dossier /vendor/hybridauth/hybridauth/hybridauth
et config.php
(fichiers de points de terminaison hybriduth) dans le dossier index.php
dans votre dossier racine de projet.
Renommer le fichier index.php
à hybrid.php
car index.php
sera utilisé par le framework Slim pour notre logique d'application de démonstration.
Remplissez le fichier config.php
avec votre application (par exemple Facebook, application Twitter).
Par exemple, si vous souhaitez que les utilisateurs se connectent à votre site Web via Facebook, Google et Twitter; votre profil devrait ressembler à ceci. Mon URL d'application est http://slim.local
.
<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>
Remarque: le paramètre base_url
doit pointer vers le fichier de point de terminaison hybriduth, dans ce cas hybrid.php
.
Reportez-vous à la documentation de configuration Hybriduth pour plus d'informations.
Ensuite, chargez le fournisseur automatique du fournisseur et instanciez la classe.
<code>require 'vendor/autoload.php'; $hybridauth = new Hybrid_Auth( 'config.php' );</code>
Utilisez la méthode authenticate
pour authentifier l'utilisateur à l'aide du fournisseur donné.
pour Facebook:
<code>$adapter = $hybridauth->authenticate( "Facebook" );</code>
pour Twitter:
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>
pour google:
<code>$adapter = $hybridauth->authenticate( "Google" );</code>Les paramètres transmis à
doivent correspondre à la touche de tableau du fournisseur dans le fichier authenticate()
. config.php
Après l'authentification, utilisez la méthode
pour récupérer les données de profil de l'utilisateur. getUserProfile()
<code>{ "require": { "slim/slim": "2.*", "hybridauth/hybridauth": "2.3.0" } }</code>
sera un objet qui contient les données de profil utilisateur renvoyé. $user_profile
Pour ajouter plus de fournisseurs, tels que GitHub, copiez le fichier
de GitHub.php
à un emplacement dans l'application (dans ce cas, le répertoire du fournisseur). Chargez le fichier à l'aide d'un wrapper de fournisseur, où vendor/hybridauth/hybridauth/additional-providers/hybridauth-github/Providers
est le chemin d'accès au fichier github et path
est le nom de sa classe PHP. 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>Utilisez la méthode
d'hybriduth pour authentifier les utilisateurs à l'aide de github, comme indiqué ci-dessous: authenticate()
<code>require 'vendor/autoload.php'; $hybridauth = new Hybrid_Auth( 'config.php' );</code>
Implémentation de la connexion sociale
Habituellement, chaque site Web avec un système de connexion et d'enregistrement utilise l'adresse e-mail ou le nom d'utilisateur de l'utilisateur pour identifier et se connecter à son compte. Si vous prévoyez d'implémenter la connexion sociale, il est recommandé de ne pas utiliser le nom d'utilisateur ou l'e-mail de l'utilisateur pour l'authentification.L'une des raisons de s'opposer à cette pratique est que, par exemple, Twitter ne renvoie pas l'adresse e-mail de l'utilisateur qui a été authentifiée à travers elle. Autrement dit, les données de profil renvoyées ne contiennent pas l'e-mail de l'utilisateur.
La plupart, sinon la totalité, des fournisseurs sociaux, tels que Facebook, Twitter, Google, LinkedIn et même GitHub, renvoient un numéro d'identification utilisateur unique après autorisation.
Ne vous connectez pas au compte de l'utilisateur à l'aide de l'e-mail de l'utilisateur, mais utilisez l'identifiant renvoyé par le fournisseur social, comme indiqué ci-dessous: Créez un compte d'utilisateur si l'utilisateur n'a pas de compte; le compte allez sur le site Web.
écriture d'une application de démonstration
Nous utiliserons le framework Slim PHP pour créer une application Web simple pour démontrer des exemples pratiques de la fa?on de mettre en ?uvre une connexion sociale à l'aide de HybridAuth.Je suppose que vous avez installé des cadres hybridauth et minces. Sinon, reportez-vous au guide d'installation ci-dessus.
Structure d'application
<code>$adapter = $hybridauth->authenticate( "Facebook" );</code>Il s'agit du SQL de la table de base de données.
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>Rédaction d'un modèle d'application
Tout le code du modèle d'application doit être placé dans le fichier app_model.php dans le dossier SRC.
L'espace de noms de fichiers est un modèle, suivi de la définition et du constructeur de classe.
<code>$adapter = $hybridauth->authenticate( "Google" );</code>
La méthode renvoie true si l'identifiant (numéro d'identification utilisateur) existe déjà dans la base de données, sinon renvoie false. identifier_exists
<code>$user_profile = $adapter->getUserProfile();</code>
Méthode Insérez les données de profil utilisateur dans la base de données. register_user
<code>"Github" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], "wrapper" => [ "path" => "providers/GitHub.php", "class" => "Hybrid_Providers_GitHub" ] ]</code>
ajoute la session d'utilisateur créée à la session Hybriduth lorsqu'elle est appelée (créée après que le fournisseur autorise avec succès l'utilisateur). login_user
<code>$adapter = $hybridauth->authenticate( "Github" );</code>
Méthode Supprimer ou détruire la session d'un utilisateur lorsque vous cliquez sur le lien de déconnexion. logout_user
<code>|-scr/ |----App_Model.php |-templates/ |----login.php |----welcome.php |-vendor/ |-composer.json |-config.php |-hybrid.php |-index.php |-.htaccess</code>Enfin, la méthode Getter renvoie le nom, l'e-mail et l'URL de l'avatar de l'utilisateur.
<code>{ "require": { "slim/slim": "2.*", "hybridauth/hybridauth": "2.3.0" } }</code>
Enregistrez Autoloader PSR-4 pour la classe de modèle en ajoutant le code suivant à votre fichier composer.json.
<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>
Exécutez composer dump-autoload
pour régénérer le fichier vendor/autoload.php
.
Logique d'application
Chargez le compositeur dans l'application index.php
Le fichier charge automatiquement le fichier et instancie SLIM.
<code>require 'vendor/autoload.php'; $hybridauth = new Hybrid_Auth( 'config.php' );</code>
Créez un répertoire appelé modèles pour stocker tous les fichiers de modèles, puis enregistrez-le ou configurez-le dans Slim comme suit:
<code>$adapter = $hybridauth->authenticate( "Facebook" );</code>
Créez une ressource Slim Database Singleton qui renverra l'instance de connexion de la base de données lorsque vous appelez.
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>
Une autre ressource singleton qui renvoie une instance Hybriduth est également créée.
<code>$adapter = $hybridauth->authenticate( "Google" );</code>
Instancier la classe du modèle d'application en passant une connexion de base de données en tant que paramètre.
<code>$user_profile = $adapter->getUserProfile();</code>
La fonction authenticate
suivante lorsqu'elle est ajoutée comme paramètre à l'itinéraire, si l'utilisateur n'est pas connecté, il le redirigera vers la page de connexion.
<code>"Github" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], "wrapper" => [ "path" => "providers/GitHub.php", "class" => "Hybrid_Providers_GitHub" ] ]</code>
redirige l'utilisateur déconnecté vers la page de connexion lorsqu'il accède à la page d'accueil ou à la page d'index de l'application.
<code>$adapter = $hybridauth->authenticate( "Github" );</code>
Ce qui suit est la définition de routage des liens de connexion sociale. Autrement dit, lorsque le lien http://slim.local/login/facebook
est cliqué, Hybriduth redirige l'utilisateur vers Facebook pour l'autorisation. Il en va de même pour Twitter http://slim.local/login/twitter
, Google http://slim.local/login/google
et tous les autres fournisseurs pris en charge.
<code>|-scr/ |----App_Model.php |-templates/ |----login.php |----welcome.php |-vendor/ |-composer.json |-config.php |-hybrid.php |-index.php |-.htaccess</code>
Appeler la méthode authenticate()
d'hybriduth redirige l'utilisateur vers le fournisseur social donné.
Après une autorisation réussie, la variable $user_profile
remplira les données de profil utilisateur.
Appelez la méthode identifier_exists()
pour vérifier si l'identifiant utilisateur existe dans la base de données. Si c'est vrai, l'utilisateur se connecte au site Web. Sinon, un compte est créé pour l'utilisateur et l'utilisateur est connecté.
Il s'agit du code pour déconnecter l'itinéraire.
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;
La méthode logout_user
dont nous avons discuté dans la classe de modèle est appelée pour détruire la session utilisateur, ainsi que pour vous déconnecter du fournisseur de connexion de l'utilisateur. 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 ... }Enfin, exécutez l'application mince.
/** * 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() ); } }Voir le référentiel GitHub de l'application pour le code source complet.
Conclusion
Dans cet article, nous avons appris à intégrer les capacités de connexion sociale aux sites Web en utilisant la bibliothèque PHP Hybriduth puissante et robuste.Si vous avez des questions ou des contributions, veuillez nous en informer dans les commentaires.
FAQ (FAQ) pour la connexion sociale avec PHP et hybriduth
Qu'est-ce que Hybridauth et comment est-il utilisé avec PHP pour la connexion sociale?
HybridUuth est une bibliothèque PHP de connexion sociale open source populaire. Il permet aux développeurs Web de créer facilement des applications sociales en fournissant un moyen facile d'authentifier les utilisateurs via leurs comptes de médias sociaux. Hybridauth agit comme une API abstraite entre les applications et diverses API sociaux et fournisseurs d'identité tels que Facebook, Twitter et Google. Il fonctionne en s'intégrant aux systèmes de connexion existants dans les applications PHP et en ajoutant des capacités de connexion sociales.
Comment installer et configurer Hybriduth dans mon application PHP?
hybriduth peut être installé via le compositeur (l'outil de gestion de la dépendance en PHP). Après l'installation, vous devez le configurer en configurant le fournisseur que vous souhaitez utiliser (réseau social). Chaque fournisseur nécessite un ensemble unique de paramètres, tels que les clés et les clés, que vous pouvez obtenir en créant des applications sur les plateformes de développeur de chaque réseau social.
Quel est le niveau de sécurité de l'hybridauth pour la connexion sociale?
HybridUuth est très sécurisé car il utilise OAuth, une norme de délégué en libre accès. OAuth fournit un accès désigné sécurisé, ce qui signifie que les utilisateurs peuvent accorder la permission des sites Web pour accéder à leurs informations sur d'autres sites Web sans leur fournir un mot de passe. Cela fait de Hybridauth une option sécurisée pour la connexion sociale.
Puis-je utiliser HybridAuth pour la connexion sociale sur plusieurs sites Web?
Oui, Hybridauth peut être utilisé sur plusieurs sites Web. Il vous suffit d'utiliser la bibliothèque de configuration d'URL de rappel correcte pour chaque site Web. Cela en fait une solution flexible pour les développeurs qui gèrent plusieurs sites Web.
Comment gérer les erreurs dans Hybridauth?
HybridUuth a un système de gestion des erreurs intégré. Lorsqu'une erreur se produit, elle lance une exception que vous pouvez attraper et gérer en fonction de la stratégie de gestion des erreurs de votre application. Cela facilite le débogage et la résolution des problèmes.
Puis-je personnaliser le look et le style du bouton de connexion sociale de Hybridauth?
Oui, vous pouvez personnaliser l'apparence et le style du bouton de connexion sociale. Hybridauth offre des capacités de connexion sociales, mais la conception et la disposition des boutons sont entièrement à vous.
Comment mettre à jour la bibliothèque Hybridauth dans mon application PHP?
La mise à jour de l'hybriduth est aussi simple que d'exécuter une commande dans Composer. Cela garantit que vous avez toujours la dernière version avec tous les correctifs et mises à jour de sécurité.
Puis-je utiliser HybridAuth avec d'autres cadres PHP?
Oui, Hybriduth n'est pas un cadre et peut être utilisé avec n'importe quel cadre PHP. Cela en fait un choix polyvalent pour les développeurs utilisant différents cadres PHP.
Comment tester la connexion sociale de Hybridauth dans mon environnement de développement local?
Tester la connexion sociale localement peut être délicat car les réseaux sociaux nécessitent des URL de rappel valides. Cependant, vous pouvez exposer votre serveur local à Internet à l'aide d'outils tels que NGROK et utiliser cette URL comme URL de rappel.
Puis-je authentifier les utilisateurs avec des comptes non sociaux tels que les e-mails et les mots de passe à l'aide de Hybriduth?
Non, Hybridauth est con?u pour la connexion sociale. Pour l'authentification traditionnelle des e-mails et des mots de passe, vous devez utiliser d'autres bibliothèques PHP ou créer votre propre système d'authentification.
La sortie maintient la mise en forme et le placement d'image d'origine.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les problèmes et les solutions courants pour la portée de la variable PHP incluent: 1. La variable globale ne peut pas être accessible dans la fonction, et elle doit être transmise en utilisant le mot-clé ou le paramètre global; 2. La variable statique est déclarée avec statique, et elle n'est initialisée qu'une seule fois et la valeur est maintenue entre plusieurs appels; 3. Des variables hyperglobales telles que $ _get et $ _post peuvent être utilisées directement dans n'importe quelle portée, mais vous devez faire attention au filtrage s?r; 4. Les fonctions anonymes doivent introduire des variables de portée parents via le mot clé Utiliser, et lorsque vous modifiez les variables externes, vous devez passer une référence. La ma?trise de ces règles peut aider à éviter les erreurs et à améliorer la stabilité du code.

Pour gérer en toute sécurité les téléchargements de fichiers PHP, vous devez vérifier la source et taper, contr?ler le nom et le chemin du fichier, définir les restrictions du serveur et traiter les fichiers multimédias deux fois. 1. Vérifiez la source de téléchargement pour empêcher le CSRF via le jeton et détecter le type de mime réel via FINFO_FILE en utilisant le contr?le de liste blanche; 2. Renommez le fichier à une cha?ne aléatoire et déterminez l'extension pour la stocker dans un répertoire non Web en fonction du type de détection; 3. La configuration PHP limite la taille de téléchargement et le répertoire temporaire Nginx / Apache interdit l'accès au répertoire de téléchargement; 4. La bibliothèque GD résait les images pour effacer des données malveillantes potentielles.

Il existe trois méthodes courantes pour le code de commentaire PHP: 1. Utiliser // ou # pour bloquer une ligne de code, et il est recommandé d'utiliser //; 2. Utiliser /.../ pour envelopper des blocs de code avec plusieurs lignes, qui ne peuvent pas être imbriquées mais peuvent être croisées; 3. Compétences combinées Commentaires tels que l'utilisation / if () {} / pour contr?ler les blocs logiques, ou pour améliorer l'efficacité avec les touches de raccourci de l'éditeur, vous devez prêter attention aux symboles de fermeture et éviter les nidification lorsque vous les utilisez.

AgeneratorInphpisamemory-EfficientwaytoterateOrgedatasetsByyieldingValuesonEatatimeIntedofreturningThemallAtonce.1.GeneratorsUsEtheieldKeywordToproduceValuesondemand, ReducingMemoryUsage.2.TheyAreusefulForHandlingBigloops, ReadingLargeFiles, OR OR.

La clé pour rédiger des commentaires PHP est de clarifier l'objectif et les spécifications. Les commentaires devraient expliquer "pourquoi" plut?t que "ce qui a été fait", en évitant la redondance ou trop de simplicité. 1. Utilisez un format unifié, tel que DocBlock (/ * /) pour les descriptions de classe et de méthode afin d'améliorer la lisibilité et la compatibilité des outils; 2. Soulignez les raisons de la logique, telles que pourquoi les sauts JS doivent être sortis manuellement; 3. Ajoutez une description d'une vue d'ensemble avant le code complexe, décrivez le processus dans les étapes et aidez à comprendre l'idée globale; 4. Utilisez TODO et FIXME Rationalement pour marquer des éléments et des problèmes de taches pour faciliter le suivi et la collaboration ultérieurs. De bonnes annotations peuvent réduire les co?ts de communication et améliorer l'efficacité de la maintenance du code.

En PHP, vous pouvez utiliser des crochets ou des accolades bouclées pour obtenir des caractères d'index spécifiques à la cha?ne, mais les crochets sont recommandés; L'index commence à partir de 0 et l'accès à l'extérieur de la plage renvoie une valeur nulle et ne peut pas se voir attribuer une valeur; MB_substr est nécessaire pour gérer les caractères multi-octets. Par exemple: $ str = "Hello"; echo $ str [0]; sortie h; et les caractères chinois tels que MB_substr ($ str, 1,1) doivent obtenir le résultat correct; Dans les applications réelles, la longueur de la cha?ne doit être vérifiée avant le boucle, les cha?nes dynamiques doivent être vérifiées pour la validité et les projets multilingues recommandent d'utiliser des fonctions de sécurité multi-octets uniformément.

Toinstallphpquickly, usexAmpPonWindowsorHomebrewonMacos.1.onwindows, downloadAndInstallxAmppp, selectComponents, startapache et placefilesInhtdocs.2.

Toléarnphpeffective, startBySettingUpAlocalServerERironmentUsingToolsLILYXAMPPANDACODEDITERLIGHILLEVSCODE.1) INSTRUSITIONXAMPFORAPACHE, MYSQL, ANDPHP.2) USACODEDEDITORFORSYNTAXSUPPORT.3)
