我刚刚从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 session 状态没有影响,因为在通话后立即检查它仍会返回打开的 session 。

就目前而言,一旦我的应用程序使用Facebook登录,它就不会注销。

[UPDATE 1]

根据要求,这是我用来检查 session 状态的代码:

if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded && FBSession.activeSession.isOpen)
 //logged in
else
 //not logged in

[UPDATE 2]

改变了我的逻辑...将我的原始代码更改为:
if (FBSession.activeSession.isOpen)
 //logged in
else
 //not logged in

因为 FBSession.activeSession.state 返回的是 FBSessionStateOpen ,而不是 FBSessionStateCreatedTokenLoaded

最佳答案

也许这会有所帮助。
https://developers.facebook.com/bugs/497294866962479?browse=search_507cb8ebc4f025673237228

我将所有这些方法一起调用以确保它确实已注销。疯狂的错误。

[FBSession.activeSession closeAndClearTokenInformation];
[FBSession.activeSession close];
[FBSession setActiveSession:nil];

10-08 15:25