Facebook iOS SDK 3.0.Xから3.1.1にアップグレードし、コードを書き直しました...
ログアウトワークフローに関するFacebookのドキュメント(https://developers.facebook.com/docs/tutorials/ios-sdk-tutorial/authenticate/#step3)に従って、 FBSession.activeSessionオブジェクトのcloseAndClearTokenInformationメソッドを呼び出しています。
呼び出しの直後にチェックするとまだ開いているセッションが返されるため、これはFacebookセッションの状態には影響しないようです。
現状では、アプリケーションがFacebookでログインすると、ログアウトしません。
[更新1]
要求に応じて、セッションの状態を確認するために使用するコードは次のとおりです。
if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded && FBSession.activeSession.isOpen)
//logged in
else
//not logged in
[更新2]
ロジックを少し変更しました...元のコードを次のように変更しました:
if (FBSession.activeSession.isOpen)
//logged in
else
//not logged in
FBSession.activeSession.stateは、 FBSessionStateCreatedTokenLoadedではなくFBSessionStateOpenを返していたためです。