2012-01-11 7 views
3

のうち、ユーザーがログインせずに私のFacebookのOAuthセッションのログアウトは、私はリダイレクトでlogout.phpを使用していません:はSDKパーFacebookの

https://www.facebook.com/logout.php?confirm=1&next={SOME URL}&access_token={ACCESSTOKEN} 

それは罰金、私をログアウトされ、それはまた、ログインしていますFacebookのユーザーから私のOAuthセッションからフェイスブックからログアウトせずにログアウトする方法はありませんか?

答えて

5

はい、私はこの同じ問題を自分で実行しました。 logout.phpやJS SDKのFB.logout()はしないでください。代わりに、HTTP Deleteコマンドを使用してGraph APIをme/permissionsに呼び出します。それはアクセストークンを殺し、ユーザーのアプリリストからアプリを削除し、ブラウザのブラウザのCookieをFacebookのために維持する。サーバー側またはクライアント側のどちらでも呼び出すことができます。ここでは、クライアント側はJavascript SDKの方法です:

FB.api("me/permissions","delete", function(response){/*do something if you want*/}) 
+0

しかし、私は自分のアプリをFacebookから削除して、自分のweb-appからログアウトしたくない。 –

+0

その後、Facebookのメソッドを呼び出さずに、Session.End()(http://php.net/manual/en/function.session-destroy.php)を呼び出すか、サイトの認証Cookieを削除してください。 – DMCS

+0

@DMCS私は同じ問題があります。私はサーバー側のアクセストークンを捨て、ユーザーが複数のアカウントを持っていて、彼が私のアプリでもう一度oauthの流れを開始すると、彼はプロンプトが表示されますか?私はfacebookがただちに私のアプリからログアウトしたユーザーのために私の期限切れでないアクセストークンを返すことを心配しています。 –

1

これはFacebookのプラットフォーム上での開発に関する多くの迷惑なものの一つです。ブラウザセッションからログアウトする唯一の方法は、ジャバスクリプトのログアウト機能やリダイレクトを試したようなものですが、ユーザーの観点からは非常に面倒なFacebookからユーザーをログアウトさせることもできます。問題は、ドメイン間の制約のためにアプリに設定したCookieにアクセスできないため、Facebookが提供する限定されたオプションに悩まされていることです。 offline_accessのプロンプトが表示されない場合は、ユーザーのアクセストークンを忘れて1時間後に期限切れになります。クッキーがその時間内にまだ設定されているという問題は依然として存在しますが。