try {
$openid = new LightOpenID($_SESSION['domain_name']);
$providers=LightOpenID::getAllProviders();
$provider=@$providers[$_ARGS['OpenIDAuthenticationProvider']];
if(isset($_ARGS['OpenIDAuthenticationProvider']))
if(!$_ARGS['OpenIDAuthenticationProvider']){
unset($_SESSION['contact']);
}
if(!$openid->mode) {
if($provider){
$openid->identity = $provider['login'];
header('Location: ' . $openid->authUrl());
exit;
}
} elseif($openid->mode == 'cancel') {
unset($_SESSION['contact']);
} else {
if($openid->validate()){
//var_dump($openid);
$contact=$openid->getContactDetails();
$_SESSION['contact']['provider']=@$_ARGS['OpenIDAuthenticationProvider'];
$_SESSION['contact']['name']=@$contact['name'];
$_SESSION['contact']['email']=@$contact['email'];
}
}
} catch(ErrorException $e) {
//echo $e->getMessage();
}
public function getContactDetails() {
$values=array();
//var_dump($this->data);
foreach($this->data as $key=>$type){
$label=@explode('_type_',$key);
if(count($label)<2)
continue;
$label=@implode('_value_',$label);
$value=$this->data[$label];
$values[$type]=$value;
/*if($value=='http://axschema.org/contact/email'){
if(@$this->data[$label])
return $this->data[$label];
}*/
}
//return $this->data['openid_ext1_value_contact_email'];
$values['email']=$values['http://axschema.org/contact/email'];
$values['name']=$values['http://axschema.org/namePerson/friendly'];
if(!$values['name'])
$values['name']=$values['http://axschema.org/namePerson'];
if(!$values['name'])
$values['name']=$values['http://axschema.org/contact/email'];
return $values;
return 'unknown-email';
}
public static function getAllProviders(){
$result=array();
/*
Google https://www.google.com/accounts/o8/id
Yahoo https://me.yahoo.com
Flickr http://www.flickr.com/username
AOL http://openid.aol.com/username
Blogspot https://www.blogspot.com/
LiveJournal http://username.livejournal.com/
Wordpress https://username.wordpress.com/
VerisignLabs https://pip.verisignlabs.com/
MyOpenID https://www.myopenid.com/
MyVidoop https://myvidoop.com/
ClaimID https://claimid.com/username
Technorati https://technorati.com/people/technorati/username/
*/
$result['google']=array('icon'=>'http://www.google.com/favicon.ico', 'label'=>'Google',
'login'=>'https://www.google.com/accounts/o8/id', 'logout'=>'https://www.google.com/accounts/Logout');
$result['yahoo']=array('icon'=>'http://www.yahoo.com/favicon.ico', 'label'=>'Yahoo',
'login'=>'https://me.yahoo.com', 'logout'=>'https://login.yahoo.com/config/login?logout=1');
return $result;
}
<?if(@$_SESSION['contact']){?>
<a class='dms-button' href='#' onclick='$(this).siblings().toggle()'>
<%icon:loggedin%><?&@$_SESSION['contact']['email']?>
</a>
<a style='display:none' class='dms-button' href='?OpenIDAuthenticationProvider='><%icon:logout%>Logout</a>
<?}else{?>
<a class='dms-button' href='#' onclick='$(this).siblings().toggle()'><%icon:login%>Login</a>
<?foreach(LightOpenID::getAllProviders() as $providerName => $provider){?>
<a style='display:none' class='dms-button' href='?OpenIDAuthenticationProvider=<?=$providerName?>'><img src='<?=$provider['icon']?>'/><?=$provider['label']?></a>
<?}?>
<?}?>