Introduction

Il est souvent pénible de se rappeler de tous ses identifiants et mots de passe que l’on utilise sur différents sites web. Pour répondre à cette problématique, de nombreux réseaux sociaux proposent des services web permettant d’utiliser leur propre service d’authentification pour des sites externes. Vous connaissez sûrement le Facebook Connect, Google login, Signin with Twitter, etc… Il existe même des plate-formes spécialisées telles qu’OpenID.

En tant que concepteur de site, il s’avère important de proposer ce type de service pour deux raisons essentielles :

  • Lors de l’inscription : plus besoin de saisir un formulaire avec pleins de données personnelles qui peut se révéler être un frein à l’inscription pour de potentiels nouveaux utilisateurs
  • Lors du login : plus besoin de se rappeler et saisir ses identifiants de connexion

De plus, tous les utilisateurs n’utilisent pas les mêmes réseaux sociaux. C’est pourquoi, il est nécessaire de proposer l’inscription ou l’authentification via plusieurs services sociaux. Or, même si l’intégration de tels services est simple. Leur multiplication augmente la charge de mise en place et de maintenance.

Présentation

C’est à cet instant qu’HybridAuth entre en scène. Ce composant PHP distribué sous licence Open Source, permet d’ajouter des fonctionnalités sociales sur vos sites web en proposant une couche d’abstraction et des implémentations pour de nombreux services. Avec un seul et unique code, vous serez capable de proposer des fonctionnalités telles que :

  • l’inscription
  • l’authentification
  • le partage social
  • la gestion du profil
  • la liste des amis
  • les flux d’activités les mises à jours de status

Via de nombreux sites (au choix de l’utilisateur) :

  • Facebook
  • Twitter
  • MySpace
  • Google
  • Yahoo!

Installation

L’installation est plus que simple. Il faut souvent s’inscrire sur les fournisseurs de services en tant que développeur et déclarer son site. Ensuite, via un formulaire sur votre propre site, vous pourrez configurer chaque fournisseur. Une fois, la configuration en place, pensez à supprimer le fichier install.php de votre serveur !

Exemple

Imaginons que le login ce fait via le lien login.php?provider={provider_name}. Voici le code PHP à ajouter pour intégrer ce module d’authentification sur votre site :

if ( isset($_REQUEST["provider"])) {
	$provider_name = $_REQUEST["provider"];

	try {
		$hybridauth = new Hybrid_Auth( $config);
		$adapter = $hybridauth->authenticate( $provider_name);
		$user_profile = $adapter->getUserProfile();
	} catch( Exception $e) {
		echo "Error: please try again! " . $e->getMessage();
	}

	$user_exist = get_user_by_provider_and_id($provider_name, $user_profile->identifier);

	if ( $user_exist) {
		$_SESSION["user_connected"] = true;
		redirect_to("http://www.mycompany.com/user/home");
	} else {
		create_new_hybridauth_user(
			$provider_name,
			$user_profile->identifier,
			$user_profile->email,
			$user_profile->firstName,
			$user_profile->lastName,
			generate_password());

		$_SESSION["user_connected"] = true;
		redirect_to("http://www.mycompany.com/user/home");
	}
}

Terriblement simple, non ? 🙂
Le site officiel propose d’autres exemples et une démo en ligne.

Problèmes rencontrés

Sur Facebook, il faut penser à désactiver le “bac à sable” dans la gestion des applications.

Le service de Yahoo! me retournait systématiquement des erreurs HTTP 401. Il existe un package de fournisseurs additionnels qui contient notamment l’implémentation OpenID de Yahoo!. Une fois installé, il suffit de configurer votre accès au service de Yahoo! via cette implémentation.

Si vous avez besoin de l’adresse email de l’utilisateur, il faut savoir que pour des raisons de sécurité seuls quels services fournissent cette information sensible : Facebook, Google, Yahoo! et Foursquare.

Il faudra également surveiller si le projet est réactif quand à la correction de bug ou faille de sécurité ainsi qu’au suivi des mises à jour des fournisseurs de service.

Conclusion

La documentation officielle est assez bien fournie. Vous êtes maintenant équipé pour soit simplifier l’accès à votre site, soit pour y ajouter une dimension sociale.

Je tiens à remercier La ferme du Web et Jérôme Vidal – Le Web dans tous ses états qui m’ont permis de découvrir ce composant fort utile !