2012-11-19 120 views
6

我使用的是官方和更新Facebook iOS SDK
我们正在iPad上开发应用程序,该应用程序使用内部分发配置文件在实体店内使用。客户可以在公开发布的iPad上登录其Facebook账户以改善其购物体验。的Facebook的iOS SDK注销

我遇到的问题是,当用户登录到他们的Facebook帐户时,下一个用户(客户)仍将使用先前用户的凭据登录(You have already authorized xxx, Press "Okay" to continue)。当然这不好。

有没有办法真正退出(签字,明确凭据,或什么都)以前(或电流)的用户,因此未来用户可以在自己的用户名和密码填写。

不幸的是[[FBSession activeSession] closeAndClearTokenInformation]并不完全做的伎俩。

这是代码的一部分到目前为止:

// .... 
[[FBSession activeSession] closeAndClearTokenInformation]; 
[FBSession.activeSession openWithCompletionHandler:^(FBSession *session, 
                 FBSessionState state, 
                 NSError *error) { 
     // More code ... 

    }]; 
// ... 

PS。 The cookie 'workaround' doesn't work for me(显然)

+0

你是如何验证用户身份?通过iOS,Facebook应用程序或Safari? – ale0xB

+0

通过safari。 – basvk

回答

8

从您的上下文中,我假设您的设备没有安装Facebook应用程序,也不期望使用iOS 6系统身份验证,这会使默认登录行为使用Safari。如果要清除Safari的Cookie,这应该工作,但在方案中使用流畅的体验,你应该使用FBSession openWithBehavior:completionHandler:方法,因此它使用了内嵌的WebView对话框验证指定的FBSessionLoginBehaviorForcingWebview行为。

查看在Facebook上的iOS SDK的SwitchUserSample为例因为该示例演示的应用程序,可以多个帐户之间切换。

+0

没有考虑检查例子。使用'FBSessionLoginBehaviorForcingWebView'行为似乎是正确的方法。 – basvk

0

尝试使用此代码。我认为它会帮助你。

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
[login logOut]; 
+1

这将创建不需要的FBSDKLoginManager的新实例 –

0

如果您正在使用Facebook的SDK 4.1.0就叫波纹管方法

if ([FBSDKAccessToken currentAccessToken]) { 
    [FBSDKAccessToken setCurrentAccessToken:nil]; 
    [FBSDKProfile setCurrentProfile:nil]; 
}