我正在使用Laravel 4来实现Hybrid Auth(Steam社区)。我在我的控制器中创建了两个方法,登录和注销。
登录正在运行,并显示来自Steam的信息:
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 :(得分:3)
您可以在Hybrid_Auth
函数中实例化logout
类,然后使用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
)
)
));
});
使用依赖注入,您的控制器也应该是可测试的。