2012-04-03 8 views
1

彼のデータを取得している:ユーザーがログインfacebookからログアウトしますが、ウェブサイトは、まだ私は次のコードを持っている

$fb = new Facebook(array('appid'=>APPID, 'appsecret'=>APPSECRET)); 
$user = $fb->getUser(); 

if($user) 
{ 
try { 
$me = $fb->api('/me'); 
} 
catch(FacebookApiException $e) { 
error_log($e); 
enter code here 
$user = null; 
} 

if($user) { blah blah blah 

を、ユーザーが、それは動作しますが、ユーザーがログインにとあればログインしていない場合、それは正常に動作します。しかし、彼が$fb->getLogoutUrl()からのリンクをクリックして、正常にフェイスブックからログアウトした場合にのみ、私のアプリはまだ彼のデータを保持しています。私は$fb->api('/me')を試してみると、ユーザーがログアウトしても例外をスローするはずですが、そうではありません。 $_SESSIONテーブルをクリアすると役立ちますが、それが適切な解決策ではないと私は思います。

アイデアはありますか?

+0

$ _SESSIONテーブルから何を削除しますか?ユーザをログアウトした後に 'destroySession'を実行するとどうなりますか? – Sammaye

+1

私はそのクッキーの問題を考える。 –

+0

@WaqarAlamgir実際に 'accessToken'はlogoutによって無効にされていないので、fbは60日間オフラインアクセスを許可する拡張アクセストークンを使用します。' destroySession'はクッキーを失い、問題を解決するはずです。 – Sammaye

答えて

1

これは、基本的にオフラインアクセス(実際にはそれを置き換えます:https://developers.facebook.com/roadmap/offline-access-removal/)と同じですが、60日間、facebookの拡張アクセストークン(わかりません)によって発生する可能性があります。

本当に心配するものではないと思います。私はあなたが何を意味するかわからない午前:

の$ _SESSIONテーブルをクリアするのに役立ちますが、私はそれが適切に 解決策ではないと思います。私はあなたが「クリア」している正確に何が不明だので

、あなたはそれがあなたのアプリをDEAUTHていません知っておくが、その場合には、はいそれは、ユーザー情報にアクセスするからあなたを停止しますaccessTokenをクリアすることがあります。ログインとログアウトは、authとdeauthの2つの全く異なるものです。/me URLは、アクセスが許可されていない場合、つまりユーザーがあなたのアプリをdeauthedした場合にのみ、通常は例外をスローします。

ログアウト($fb->destroySession())後にを使用すると、あなたの側のクッキーを破壊してユーザーアクセスをリセットすることで、ほとんどの問題を解決できると思います。

関連する問題