我有一个应用程序,可以在其中向 Facebook 提交数据,登录一切正常,成功登录后将用户凭据存储在用户默认值中。
我遇到的问题是,似乎无法检测用户何时退出 Facebook 应用程序或使用 Mobile Safari。这意味着我的应用程序在其生命周期内仅与一位用户绑定(bind)。
我不想在我的应用程序中放置“注销”按钮,如果我有一个,那么我可以轻松调用注销方法并删除用户凭据,这意味着新用户可以使用我的应用程序进行身份验证,但这不可能.
有谁知道我可以检查用户是否登录以及如果登录则获取他们的 Facebook ID 的方法吗?这样,如果没有人登录或登录用户的凭据与保存的凭据不匹配,我可以再次强制授权。
谢谢
最佳答案
我认为这里的问题和困惑在于 FB 实现了“单点登录 (SS-On)”,但没有实现“单点登录 (SS-Out)”。
SS-On 的工作方式是,如果您之前登录过您的应用程序,则 token 将存储在您的应用程序中。这意味着即使您已经注销了 FB 应用程序,并且随后可能以其他用户身份登录,只要您的应用程序仍然拥有之前用户的 token ,您仍然可以访问之前的用户数据。
您可以做的是当应用程序进入后台时 closeSessionAndClearToken 。这可能是也可能不是您想要的行为。请注意,这意味着您的应用程序的所有内容都会从后台从事件状态恢复,每次都需要重新执行 SS-On 的整个练习。
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[FBSession.activeSession closeSessionAndClearToken];
}
关于iphone - iOS SDK 在后台和 session 中注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521011/