2013-06-12 28 views
0

我使用Laravel 4来实现混合验证(Steam社区)。我在我的Controller中做了两种方法,登录和注销。混合验证:注销

登录工作,并显示来自蒸汽的信息:

public function login() 
{ 

    $config = array( 
     "base_url" => "http://site.com/login/auth", 
     "providers" => array ( 
      "OpenID" => array (
        "enabled" => true 
      ), 
      "Steam" => array ( 
       "enabled" => true 
      ) 
     ) 
    ); 

    try { 
     $socialAuth = new Hybrid_Auth($config); 
     $provider = $socialAuth->authenticate("Steam"); 
     $userProfile = $provider->getUserProfile(); 
    } 
    catch(Exception $e) { 
     return "Error: " . $e; 
    } 

    echo "Connected with: <b>{$provider->id}</b><br />"; 
    echo "As: <b>{$userProfile->displayName}</b><br />"; 
    echo "<pre>" . print_r($userProfile, true) . "</pre><br />"; 
    echo "<img src=". $userProfile->photoURL . ">"; 

} 

现在注销,我会打电话$provider->logout();但我想用另一种方法来注销。

不过,我似乎无法理解这是如何工作的?我已经试过的东西,如:

public function logout() 
{ 

    Hybrid_Auth()->authenticate('Steam')->logout(); 

} 

上有http://hybridauth.sourceforge.net/apidoc.html delaring方法文档,例如Hybrid_Auth::logoutAllProviders()但是我可以(?)似乎无法解决如何使用它!

任何帮助将膨胀!

谢谢。

+0

很抱歉对您的问题发表评论,但既然您似乎已经掌握了它的工作方式,您如何处理Laravel中的hybridauth而不是按照此处所述从正确的路径加载Steam? http://stackoverflow.com/questions/18592642/laravel-4-composer-and-hybridauth-how-to-load-additional-providers – robjbrain

+0

嘿,为你评论这个问题。 – Alias

回答

2

您可以在logout函数实例化一个Hybrid_Auth类,然后使用logoutAllProviders方法:

(new Hybrid_Auth($config))->logoutAllProviders(); 

不过,我建议你通过HybriadAuth的实例构造函数:

# YOUR CONTROLLER 
public function __construct(Hybrid_Auth $hybridAuth) 
{ 
    $this->hybridAuth = $hybridAuth; 
} 

public function logout() 
{ 
    $this->HybridAuth->logoutAllProviders(); 
} 

# ELSEWHERE IN THE APP (ROUTES FILE, FOR INSTANCE) 
App::bind('Hybrid_Auth', function() { 
    return new Hybrid_Auth(array(
      "base_url" => "http://site.com/login/auth", 
      "providers" => array (
       "OpenID" => array (
         "enabled" => true 
       ), 
       "Steam" => array (
        "enabled" => true 
       ) 
      ) 
     )); 
}); 

有了依赖性注射,您的控制器也应该是可测试的。

+0

谢谢,虽然我如何启动Steam认证? $ provider = $ this-> HybridAuth-> authenticate(“Steam”);或者其他的东西? (不起作用,但我认为我很接近...) – Alias

+0

啊,它是“hybridAuth”而不是“HybridAuth”。所以我设法登录,但是当调用我的注销功能时,我收到错误“Route pattern”/ login/{action}/{{action}}“不能多次引用变量名”action“。以前见过吗? – Alias

+0

代码:http://paste.laravel.com/x9l – Alias