Facebook iOS SDK 注销
Posted
技术标签:
【中文标题】Facebook iOS SDK 注销【英文标题】:Facebook iOS SDK Logout 【发布时间】:2012-11-19 16:06:21 【问题描述】:我用的是官方更新的Facebook ios SDK. 我们正在使用内部分发配置文件在实体店内使用的 iPad 上开发应用程序。客户可以在 iPad 上登录他们的 Facebook 帐户以改善他们的购物体验。
我遇到的问题是,当用户登录他们的 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(显然)
【问题讨论】:
您如何验证用户身份?通过 iOS、Facebook 应用程序或 Safari? 【参考方案1】:根据您的上下文,我假设您的设备没有安装 Facebook 应用程序,您也不希望使用 iOS 6 系统身份验证,这将保留默认登录行为以使用 Safari。如果您要清除 Safari cookie,这应该可以,但为了在您的场景中获得更流畅的体验,您应该使用 FBSession openWithBehavior:completionHandler:
方法并指定 FBSessionLoginBehaviorForcingWebview
的行为,以便它使用内联 webview 对话框进行身份验证。
有关示例,请参阅 Facebook iOS SDK 中的 SwitchUserSample,因为该示例演示了一个可以在多个帐户之间切换的应用。
【讨论】:
没有考虑检查示例。利用FBSessionLoginBehaviorForcingWebView
行为似乎是正确的方法。【参考方案2】:
试试这个代码。我想它会对你有所帮助。
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut];
【讨论】:
这将创建不需要的 FBSDKLoginManager 的新实例【参考方案3】:如果您使用的是 facebook sdk 4.1.0,只需调用以下方法
if ([FBSDKAccessToken currentAccessToken])
[FBSDKAccessToken setCurrentAccessToken:nil];
[FBSDKProfile setCurrentProfile:nil];
【讨论】:
以上是关于Facebook iOS SDK 注销的主要内容,如果未能解决你的问题,请参考以下文章
与 Facebook iOS SDK 共享后从 Facebook 注销