<?php
/* Description: Class for Yahoo BBAuth API
* @author: Sadiqur Rahman
* @param: $AppID=Yahoo BB Authentication Application ID
* @param: $secret=Yahoo BB Authentication Secret key
* @param: $AppData=Your application data which is an optional parameter
* @Links: http://developer.yahoo.com/auth/
* @Author-URI: http://sadiqbd.wordpress.com
* @Author-EMail: sadiqbd@gmail.com
* License: GPL
* Version: 1.0.0
*/
//declaring the class
class YahooAuth {
protected $AppID;
protected $secret;
public $AppData;
function __construct($AppID=NULL,$secret=NULL,$AppData=NULL){
if (isset($AppID) && (!empty($AppID))){
$this->AppID = $AppID;
}else{
global $YahooAppID;
$this->AppID = $YahooAppID;
}
if (isset($secret) && (!empty($secret))){
$this->AppID = $secret;
}else{
global $YahooSecret;
$this->secret = $YahooSecret;
}
if (isset($AppData) && (!empty($AppData))){
$this->AppData = $AppData;
}
if (!headers_sent()) {
session_start();
}
}
//Signature generation for Yahoo BBAuth
protected function signature($path,$data,$ts){
return md5($path.$data."&ts=".$ts.$this->secret);
}
//Generating login URL
function generate_url(){
$ts=time();
$path="/WSLogin/V1/wslogin";
$data="?appid=".$this->AppID."&appdata=".$this->AppData;
$sig=$this->signature($path,$data,$ts);
$url = "https://api.login.yahoo.com/WSLogin/V1/wslogin"
."?appid=".$this->AppID."&appdata=".$this->AppData."&ts=".$ts."&sig=".$sig;
return $url;
}
//Automatically redirecting Yahoo login page
function login(){
if (!headers_sent()) {
header('Location: '.$this->generate_url());
exit;
// If Header already sent, redirect to Yahoo using Javascript.
} else {
echo "<script type=\"text/javascript\">
<!--
window.location = \"".$this->generate_url()."\"
//-->
</script>".
"<div align='center'>If you are not redirected within 5 Seconds <a " .
"href=\"".$this->generate_url()."\">Click Here</a>";
exit;
}
}
//Getting and verifying data from cookie and WSSID given by yahoo
//and storing data into session for future use
function get_credentials($token) {
$ts=time();
$path="/WSLogin/V1/wspwtoken_login";
$data="?appid=".$this->AppID."&token=".$token;
$sig=$this->signature($path,$data,$ts);
$url = "https://api.login.yahoo.com/WSLogin/V1/wspwtoken_login"
."?appid=".$this->AppID."&token=".$token."&ts=".$ts."&sig=".$sig;
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$store = curl_exec( $ch );
$xml = curl_exec( $ch );
if ( preg_match( "/(Y=.*)/", $xml, $match_array ) == 1 ) {
$COOKIE = $match_array[1];
}
if ( preg_match( "/<WSSID>(.+)<\/WSSID>/", $xml, $match_array ) == 1 ) {
$WSSID = $match_array[1];
}
if ( preg_match( "/<Timeout>(.+)<\/Timeout>/", $xml, $match_array ) == 1 ) {
$timeout = $match_array[1];
}
$_SESSION['valid_user']=true;
$_SESSION['COOKIE'] = $COOKIE;
$_SESSION['WSSID'] = $WSSID;
$rv = array();
$rv["COOKIE"] = $COOKIE;
$rv["WSSID"] = $WSSID;
$rv["timeout"] = $timeout;
return $rv;
}
//some magic methods for your convenience
function __get($name){
return $this->$name;
}
function __set($name,$value){
$this->$name=$value;
}
function __toString(){
return(var_export($this,TRUE));
}
function __destruct(){
unset($this);
}
}
?>
|