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: 6 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( $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);
    }
}
?>