我正在使用https://github.com/pocesar/facebook-kohana
进行Facebook登录。我有facebook登出的问题。它不会破坏facebook会话。我尝试了很多东西,并且我读了很多问题。我在我的注销方法中尝试了这个,但没有结果:
$this->redirect('https://www.facebook.com/logout.php?
next=mysite.dev
&access_token=USER_ACCESS_TOKEN');
我的退出方法是:
public function action_logout(){
$facebook = new Facebook(array(
'appId' => 'appId',
'secret' => 'mySecret',
));
$user = $facebook->getUser();
$facebook->destroySession();
Session::instance()->delete('user');
$this->redirect('/');
}
如何销毁会话,以便用户可以使用其他Facebook帐户登录我的网站?谢谢!
我的方法登录是:
public function action_fbLogin(){
$facebook = new Facebook(array(
'appId' => 'appId',
'secret' => 'Secret',
));
$user = $facebook->getUser();
if ($user) {
$user_profile = $facebook->api('/me', array('fields' => 'id,email,name,first_name,last_name,picture'));
$user_id = Model_UserFunctions::checkIfUserExist($user_profile['email']);
if($user_id > 0)
{
Session::instance()->set('user', array(
'fb_id' => $user_profile['id'],
'user_id' => $user_id,
'pic' => $user_profile['picture'],
'email' => $user_profile['email'],
'first_name' => $user_profile['first_name'],
'last_name' => $user_profile['last_name'],
));
//var_dump($_SESSION);
$this->redirect('profile');
exit;
}
$values = array(
'email' => $user_profile['email'],
'username' => $user_profile['email'],
'password' => '12345678'
);
$user = ORM::factory ( 'User' );
$user->values($values);
try
{
if($user->save()){
$user_new_id = $user->as_array();
$user_new_id = $user_new_id['id'];
Session::instance()->set('user', array(
'fb_id' => $user_profile['id'],
'user_id' => $user_new_id,
'pic' => $user_profile['picture'],
'email' => $user_profile['email'],
'first_name' => $user_profile['first_name'],
'last_name' => $user_profile['last_name'],
));
$this->redirect('profile');
}
}
catch (ORM_Validation_Exception $e)
{
$result = $e->errors('models');
echo '<pre>';
print_r($result);
exit;
}
}
else
{
$this->redirect($facebook->getLoginUrl(array('id,email,name,first_name,last_name,picture')));
}
exit;
}
编辑:我使用Facebook退出的目标是因为在我的网站中我只使用Facebook登录,没有其他方式登录我的网站,这是它的想法。我应该在我的网站上有注销方法,所以当用户想要注销时,他就可以做到。 这从facebook注销我,但显示了facebook登录页面。如何重定向到我的网站旁边。我已将其设置为下一个,但它不会重定向到它:
<a href="https://www.facebook.com/logout.php?
next=http://mysite.dev
&access_token=Null">Logout</a>
答案 0 :(得分:0)
您可以使用facebook-php-sdk API获取facebook注销网址。 当用户点击该网址时,他将从他的Facebook帐户离线。
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
}
有关详情,请查看此网址。
答案 1 :(得分:0)
然后你没有问题
只是需要销毁的会话......
在PHP手册页上,有一个示例显示您可能需要在unset($_SESSION)
之外销毁会话的附加步骤
http://php.net/manual/en/function.session-destroy.php
强迫用户从Facebook注销对我来说似乎不是一件好事。
数以百万计的FB用户故意要求他们保持登录状态,如果他们访问您的网站并从那里注销,他们可能会认为您将它们从FB帐户中注销并不是非常友好。许多人甚至不记得他们的密码...所以你会为他们创造一个问题,他们可能永远不会回到你的网站......只是说