所以这是我的问题。我登录到我的应用程序,然后退出我的应用程序,但是当我尝试再次登录时,我会在下面的链接中看到屏幕。
正如您所看到的,我没有机会与其他用户一起登录,这就是预期的用户。
我尝试做的是注销,然后使用以下方法清除注销中的所有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帐户中的模式因此可能与此有关,但并不完全确定。有人对此有任何经验并知道我们问题的解决方案,如上图所示。
答案 0 :(得分:2)
Facebook登录的整个目标是允许快速,无缝地登录您的Facebook帐户,而无需重新输入凭据。
为此,Facebook SDK尝试利用已存储在设备上的凭据,其中可能包括:
SFSafariViewController
)当您注销时,实际上只有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)