如何从我的网站的Facebook注销

时间:2015-09-28 08:55:29

标签: php facebook session kohana logout

我正在使用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>

2 个答案:

答案 0 :(得分:0)

您可以使用facebook-php-sdk API获取facebook注销网址。 当用户点击该网址时,他将从他的Facebook帐户离线。

if ($user) {
   $logoutUrl = $facebook->getLogoutUrl();
} else {
   $loginUrl = $facebook->getLoginUrl();
}

有关详情,请查看此网址。

https://github.com/facebookarchive/facebook-php-sdk

答案 1 :(得分:0)

然后你没有问题

只是需要销毁的会话......

在PHP手册页上,有一个示例显示您可能需要在unset($_SESSION)之外销毁会话的附加步骤

http://php.net/manual/en/function.session-destroy.php

强迫用户从Facebook注销对我来说似乎不是一件好事。

数以百万计的FB用户故意要求他们保持登录状态,如果他们访问您的网站并从那里注销,他们可能会认为您将它们从FB帐户中注销并不是非常友好。许多人甚至不记得他们的密码...所以你会为他们创造一个问题,他们可能永远不会回到你的网站......只是说