Thursday, June 6, 2013

hybridauth with cake

Hi everyone, i'm trying to crate log in with facebook on my cake site. I add HybridAuth to cake as a component. The login is success but whenever i'm tryin to log out an error occurs 


"Fatal error: Call to a member function logout() on a non-object in /var/www/site.demo/app/vendors/hybridAuth/Hybrid/Provider_Adapter.php on line 153"

/-------------------------------------------------------------------------------------------------------------------/
hybrid_auth component

class hybridAuthComponent extends Object
{
    private $hybrid_Auth ;
    public $adapter;
    public $error;
    
    function initialize(&$controller,$settings = array())
    {
        $this->controller = &$controller;    
        App::import("Vendor", "hybridauth", array("file" => "Hybrid/Auth.php"));
        
        $hybridauth_config = array(
"base_url" => 'http://'.$_SERVER['HTTP_HOST'] . "/app/vendors/hybridAuth/", // well watev, set yours

"providers" => array ( 
"Facebook" => array (
"enabled" => true,
"keys"    => array ( "id" => "110452372497767", "secret" => "8901c51b79c4d24705da96660ea75192" ),
"scope"   => null, 
)
)
); 

try
        {
// create an instance for Hybridauth with the configuration file path as parameter
$this->hybrid_Auth = new Hybrid_Auth( $hybridauth_config );
     }
catch( Exception $e )
        {
// Display the recived error
switch( $e->getCode() ){ 
case 0 : $error = "Unspecified error."; break;
case 1 : $error = "Hybriauth configuration error."; break;
case 2 : $error = "Provider not properly configured."; break;
case 3 : $error = "Unknown or disabled provider."; break;
case 4 : $error = "Missing provider application credentials."; break;
case 5 : $error = "Authentification failed. The user has canceled the authentication or the provider refused the connection."; break;
case 6 : $error = "User profile request failed. Most likely the user is not connected to the provider and he should to authenticate again."; 
    $adapter->logout(); 
    break;
case 7 : $error = "User not connected to the provider."; 
    $adapter->logout(); 
    break;

// well, basically your should not display this to the end user, just give him a hint and move on..
$error .= "<br /><br /><b>Original error message:</b> " . $e->getMessage(); 
$error .= "<hr /><pre>Trace:<br />" . $e->getTraceAsString() . "</pre>";  

$this->error = $error;
}    
    } 
    
    function connect($provider)
    {
        

// try to authenticate the selected $provider
$this->adapter = $this->hybrid_Auth->authenticate( $provider );
            //echo '<pre>';print_r($this->adapter);echo '</pre>';
            echo '<pre>';print_r(Hybrid_Auth::getSessionData());echo '</pre>';
            
// grab the user profile
$user_profile = $this->adapter->getUserProfile();
return $user_profile ;
    }
    
    function logout() 
    {
        Hybrid_Provider_Adapter::logout();
        //$this->adapter->logout();
    }
}
/-------------------------------------------------------------------------------------------------------------------/
the hybrid auth example controller 

<?php
session_start();

class HaexampleController extends AppController 
{
    var $uses = array();
    var $components = array("hybridAuth");
    
public function index() 
    { 
public function authenticatewith( $provider ) 
    {   
        $user_profile = $this->hybridAuth->connect($provider);
        $this->set('user_profile',$user_profile);  
}
    
    public function logout()
    {
        $this->hybridAuth->logout();
    } 
}
/-------------------------------------------------------------------------------------------------------------------/
Any help would be appreciated, Thanks.

--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
 
---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

No comments: