在退出iOS应用程序后无法以不同用户身份登录

时间:2015-12-30 12:27:57

标签: ios swift facebook-ios-sdk logout

所以这是我的问题。我登录到我的应用程序,然后退出我的应用程序,但是当我尝试再次登录时,我会在下面的链接中看到屏幕。

Login Screen

正如您所看到的,我没有机会与其他用户一起登录,这就是预期的用户。

我尝试做的是注销,然后使用以下方法清除注销中的所有Cookie:

 @IBAction func logout(sender: AnyObject) {

    //Logged out here
    let loginManager = FBSDKLoginManager()
    loginManager.logOut()

   //This is one method I tried 
    let appDomain = NSBundle.mainBundle().bundleIdentifier!
NSUserDefaults.standardUserDefaults().removePersistentDomainForName(appDomain)


    //This is another method I tried 
    for key in NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys {
        NSUserDefaults.standardUserDefaults().removeObjectForKey(key)
    }


    //And this is the last method I tried
    var cookie: NSHTTPCookie
    var storage: NSHTTPCookieStorage = NSHTTPCookieStorage.sharedHTTPCookieStorage()

    for cookie in storage.cookies! {
        var domainName: String = cookie.domain
        var domainRange: Range = domainName.rangeOfString("facebook")
        if domainRange.length > 0 {
            storage.deleteCookie(cookie)
        }
    }

}

这些似乎都没有解决我的问题。该应用程序位于"开发" Facebook Dev帐户中的模式因此可能与此有关,但并不完全确定。有人对此有任何经验并知道我们问题的解决方案,如上图所示。

2 个答案:

答案 0 :(得分:2)

Facebook登录的整个目标是允许快速,无缝地登录您的Facebook帐户,而无需重新输入凭据。

为此,Facebook SDK尝试利用已存储在设备上的凭据,其中可能包括:

  • 来自Facebook应用程序的登录信息
  • 与Safari登录相关的cookie(直接或通过SFSafariViewController
  • 系统Facebook帐户

当您注销时,实际上只有Facebook SDK忘记了应用程序中的凭据(它会清除令牌)。当你再次登录时,它就像你第一次这样做,如果它找到了现有用户,它将使用它(Facebook SDK使 - 通常是有效的 - 假设有一个人使用该设备,他们有一个Facebook帐户)。

当前"最爱" Facebook SDK的路径(尽管因SDK版本,iOS版本以及可能的其他参数而异)是SFSafariViewController,它与Safari共享cookie,而不是与您的应用共享。

如果您希望用户完全注销设备,则他们必须使用Safari中的Facebook(或SFSafariViewController)中的注销链接。

如果您想以编程方式执行此操作,可以在Safari或SFSafariViewController中打开以下URL:

https://www.facebook.com/logout.php?next=[YourAppURL]&access_token=[ValidAccessToken]

但是,您必须使用自定义网址方案返回到您的应用/退出SFSafariViewController

答案 1 :(得分:1)

如果您作为用户想再次查看来自Facebook的权限请求,则应该从Facebook上的用户个人资料中删除该应用。

Facebook - go to settings

当您进入设置屏幕时,找到您的应用并点击十字按钮

Facebook - remove app