これは私が理解しようとしてきた本当に苛立たしい問題(バグ?)です。多くの人が同じ問題について不平を言っているようですが、この問題を修正する明確な解決策やチュートリアルはありません。
とにかく、私の問題は、ユーザーがLogOutをクリックしたときに、SDKにユーザーを正常にログインさせることができることです。それらをリダイレクトしfacebook.com/home.php
(「next」パラメーターが私のサイトに設定されている場合でも)、ユーザーが再び私のサイトにアクセスしてもログアウトされません...
これがコードです...(FacebookライブラリはCodeigniter構成を介して自動ロードされます)
public function DestroySession()
{
$this->load->helper('url');
if($this->facebook->getUser())
{
$this->facebook->destroySession();
$logout = $this->facebook->getLogoutUrl(array("next" => "http://mysite.com/"));
redirect($logout, 'location', 301);
}
}
だから私はこれをようやく機能させました。以下に新機能を示します。いくつかの理由で、私はあなたがこれらのステップをしなければならないことについて完全に確信していません。
public function DestroySession()
{
$this->load->helper('url');
//Get User ID
$user = $this->facebook->getUser();
if ($user)
{
try
{
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $this->facebook->api('/me');
// print_r($user_profile);
} catch (FacebookApiException $e)
{
log_message('eror', $e);
$user = null;
}
}
// Login or logout url will be needed depending on current user state.
if ($user)
{
if( session_id() ){} else { session_start() ; }
$logoutUrl = $this->facebook->getLogoutUrl($params = array('next' => base_url()));
//echo 'Logout; '.($logoutUrl);
$this->facebook->destroySession();
redirect($logoutUrl, 'refresh');
}
}