Login   Register  
PHP Classes
elePHPant
Icontem

File: class.YahooAuth.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Sadiqur Rahman  >  Yahoo BBAuth  >  class.YahooAuth.php  >  Download  
File: class.YahooAuth.php
Role: Class source
Content type: text/plain
Description: Wrapper Class
Class: Yahoo BBAuth
Authenticate users with Yahoo accounts
Author: By
Last change: Auther name correction.
Date: 5 years ago
Size: 4,143 bytes
 

Contents

Class file image Download
<?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$chCURLOPT_URL$url );
        
curl_setopt$chCURLOPT_RETURNTRANSFER);
        
$store curl_exec$ch );
        
$xml curl_exec$ch );

        if (  
preg_match"/(Y=.*)/"$xml$match_array ) == ) {
            
$COOKIE $match_array[1];
        }
        if (  
preg_match"/<WSSID>(.+)<\/WSSID>/"$xml$match_array ) == ) {
            
$WSSID $match_array[1];
        }
        if (  
preg_match"/<Timeout>(.+)<\/Timeout>/"$xml$match_array ) == ) {
            
$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);
    }
}
?>