Skip to content

Instantly share code, notes, and snippets.

@dandelionmood
Created February 18, 2012 16:55
Show Gist options
  • Save dandelionmood/1860174 to your computer and use it in GitHub Desktop.
Save dandelionmood/1860174 to your computer and use it in GitHub Desktop.
OpenID - Établissement connexion
<?php
include('openid.php');
// Rebelote
$openid = new LightOpenID('mon.site.fr');
// On doit être dans le contexte d'un retour de connexion
// cette variable sera remplie si c'est le cas.
if($openid->mode) {
if( isset($_GET['openid_mode']) && $_GET['openid_mode'] == 'cancel' ) {
throw new Exception("Vous n'avez pas autorisé
l'application à accéder à vos données, la procédure
ne peut pas se poursuivre.");
}
else {
// On récupère ainsi les variables qui ont été
// transmises
$attributs = $openid->getAttributes();
// Mode "standard", il faut découper nom et prénom.
if(isset($attributs['namePerson'])) {
list($prenom,$nom) = explode(' ',$attributs['namePerson']);
return Internaute::connexion(
$attributs['contact/email'],
$prenom,
$nom
);
// Mode non-standard -> Google
} else {
// Google découpe déjà le prénom et le nom.
return Internaute::connexion(
$attributs['contact/email'],
$attributs['namePerson/first'],
$attributs['namePerson/last']
);
}
}
<?php
include('openid.php');
// Instanciation, on passe en paramètre le domaine le domaine
// du site sur lequel établir la connexion. Il doit absolument
// correspondre à la réalité !
$openid = new LightOpenID('mon.site.fr');
// Identifiant du service vers lequel établir la connexion, ici
// on se connecte à Google.
$openid->identity = 'https://www.google.com/accounts/o8/id';
// Champs qui seront demandés à l'internaute. Les deux derniers
// sont spécifiques à Google, voyez la documentation de la
// classe LightOpenID.
$openid->required = array('contact/email', 'namePerson',
'namePerson/first', 'namePerson/last');
// URL de retour qui sera appelée par le formulaire de Google
// pour l'envoi des informations de connexion de l'internaute
$openid->returnUrl = 'http://mon.site.fr/callback';
// Finalement on redirige l'internaute vers le formulaire de
// connexion chez Google pour l'inviter à se connecter.
header('Location: '.$openid->authUrl());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment