我试过四处寻找但我无法找到问题的答案。
我正在玩这个来自github的应用程序: https://github.com/Yalantis/Koloda/tree/master/Example
我正在使用它,因为我正在做一个项目,它将使用此应用程序中基于磁贴的滑动。
我也在使用firebase。到目前为止,我可以将用户添加到我的数据库中,因此应用程序和firebase已连接。
我还希望用户使用Facebook注册/登录。
我已将我的应用程序连接到Facebook,用户可以使用facebook身份验证进入并成功登录。
我遇到的问题是退出。
当我点击退出按钮时,我希望用户完全注销。所以有一个名为logout的facebook SDK附带的注销方法。 以下是我的代码的相关部分。
import FBSDKLoginKit
@IBAction func handleLogout(sender: AnyObject) {
facebookLogin.logOut()
print("loggedout")
}
因此,当我点击退出然后再次点击登录时,我会看到这个页面:
我不希望用户在点击退出按钮后保持授权。我如何做到这一点,当我点击退出按钮时,用户完全从Facebook注销,然后当他们点击登录按钮时,他们必须重新输入他们的用户名/密码?
我已经尝试过浏览网页,但无法找到问题的解决方案,虽然我确信这很简单,我希望!
感谢您的帮助,如果格式不佳,请抱歉。
答案 0 :(得分:19)
如果您要以编程方式让用户从应用程序本身注销,您可以查看以下代码
let loginView : FBSDKLoginManager = FBSDKLoginManager()
loginView.loginBehavior = FBSDKLoginBehavior.Web
这将在您的应用中打开Facebook登录弹出窗口,用户可以在该应用中登录您的应用
退出时,您可以致电
let manager = FBSDKLoginManager()
manager.logOut()
这将在应用程序中从facebook注销用户,之后如果您调用SDK的登录方法,您将再次看到登录弹出窗口
如果要清除配置文件和令牌,请使用注销
调用以下代码 FBSDKAccessToken.setCurrentAccessToken(nil)
FBSDKProfile.setCurrentProfile(nil)
答案 1 :(得分:9)
当您调用logOut时,用户将退出您的应用。至于将它们从Facebook中删除,我认为你不能这样做,Facebook也不会允许它。用户首次通过Facebook授权您应用时,Facebook会将您的应用添加到他们获得授权的应用列表中(他们可以通过Facebook.com访问该页面)。当他们再次登录并登录时,他们会看到您发布图片的页面,因为他们已经授权了。他们重新授权的唯一方法是从他们的Facebook应用页面删除该应用并再次登录您的应用。
答案 2 :(得分:3)
当前Facebook SDK处理此问题的方式对我来说似乎是一个安全漏洞。如果我在登出时借用朋友iPad并登录到Facebook应用程序,我应该完全退出应用程序并使用它来验证我的SFSafariViewController。现在它仍然使用cookie 记住我在SFSafariViewController中。
要从Facebook SDK和SFSafariViewController正确登录用户,请执行以下操作:
let fbLoginManager = FBSDKLoginManager()
fbLoginManager.logOut()
let cookies = HTTPCookieStorage.shared
let facebookCookies = cookies.cookies(for: URL(string: "https://facebook.com/")!)
for cookie in facebookCookies! {
cookies.deleteCookie(cookie )
}
我真的不喜欢这个解决方案,但它是我能够提出的最佳解决方案。
答案 3 :(得分:2)
用户Dan L在他写的one of my comments中有正确答案:
哦,我明白你的意思了。如果你进入safari应用程序,你可以去Facebook.com注销你的帐户,登录到另一个帐户,然后回到你的应用程序。当您调用Facebook登录时弹出的Safari扩展程序应显示已登录的新用户!
这正是我所需要的。谢谢Dan L。
答案 4 :(得分:1)
从你的评论我可以看到你想要的东西。
您可以重置模拟器的内容和设置:
单击模拟器/重置内容和设置