2011-09-14 8 views
0

私が設定したやり方は、ユーザーが最初にサイトにアクセスしたときに、Facebookにログインするように要求することです。アクセストークンを取得し、自分のサイトにセッションを作成します。Facebookからログアウトしても、自分のウェブサイトにログインしているユーザーはどのように扱うべきですか?

いつでもユーザーがFacebookなどからログアウトすると、別のタブでセッションがアプリケーション内に残っています。

ユーザーがまだFacebookにログインしているかどうかを検出する唯一の方法は、既存のアクセストークンがまだ有効かどうかを確認する方法ではないため、アクセストークンを再要求しているようです。

私がやって単純にしようとしませんでした:トークンが有効でなくなっているので、(ユーザーがログアウトしたように)、

file_get_contents('https://graph.facebook.com/me?access_token=xxx') 

をしかし、のfile_get_contentsブラウザでこれを閲覧することはOAuthを示し、にもかかわらず、エラーを返しますfile_get_contentsを想定して例外が、イムが原因HTTPレスポンスコード

+0

が、私はからコードを取得する全体の2段階のプロセスを通過する必要がないことを好むだろうクエリ文字列はそれを送信します。私のサイトでは、現在のアクセストークンが有効ではないことを検出し、ユーザーに通知する必要があります。 – Tim

答えて

2

を検出することができない私は思う:また

@$data=file_get_contents('https://graph.facebook.com/me?access_token=xxx'); 
foreach ($http_response_header as $rh) if (substr($rh, 0, 4)=='HTTP') list(,$status,)=explode(' ', $rh, 3); 
if ($status==200 && $data) 
    //Token is good, parse data 
else 
    //Token is no good 
+0

チャンピオン!これは私が探していた正確な解決策です! – Tim

0

の質問の多くがここにありますerroringさ..私はいくつかの洞察を共有する:

  1. ユーザがブラウザの1つのタブにFBをログアウトすると、すべてのタブからログアウトされます

  2. FBアプリケーションがoffline_acessのようなユーザのアクセス権を要求した場合、 access_tokenはを

  3. access_tokenは勿論任意の情報を取得するために必要されなければならない。..いくつかのFB IDの痛みと自分のIDマッピングを明示的に有効期限とaccess_tokenはを求めていない場合は、有効なままに...維持している

  4. ユーザーがFBクレデンシャルを変更すると、access_tokenが変更されます。あなたはこのような何かを行うことができFBアプリは

+0

1.私がセッションを言うとき、私は自分のアプリケーションセッションを意味します – Tim

+0

2.ユーザーが自分のページにアクセスした場合、別のタブに移動してFacebookからログアウトし、自分のサイトに戻って、アプリケーションがそのユーザーのステータスを書き留めるよう要求するアクションを実行しようとしますアプリケーションは、新しいアクセストークンを要求できるように、ユーザーがFacebookからログアウトしたことを知る必要があります – Tim

関連する問題