【问题标题】:How to logout user using Facebook authentication using Swift and iOS?如何使用 Swift 和 iOS 使用 Facebook 身份验证注销用户?
【发布时间】:2016-07-21 23:30:09
【问题描述】:

我已尝试四处搜索,但找不到问题的答案。

我在 github 上玩这个应用程序: https://github.com/Yalantis/Koloda/tree/master/Example

我正在使用它,因为我正在做一个项目,该项目将使用此应用程序中基于磁贴的滑动。

我也在使用 Firebase。到目前为止,我可以将用户添加到我的数据库中,因此应用程序和 firebase 已连接。

我还希望用户使用 facebook 注册/登录。

我已将我的应用程序连接到 facebook,并且用户可以进入并使用 facebook 身份验证成功登录。

我遇到的问题是退出。

当我单击注销按钮时,我希望用户完全注销。因此,facebook SDK 附带了一个注销方法,称为注销。 这是我的代码的相关部分。

import FBSDKLoginKit
@IBAction func handleLogout(sender: AnyObject) {

    facebookLogin.logOut()
    print("loggedout")
    }

所以当我点击注销然后再次点击登录时,我会得到这个页面:

http://imgur.com/owi3zZn

我不希望用户在单击注销按钮后保持授权。如何做到这一点,以便当我点击注销按钮时,用户完全从 Facebook 注销,然后当他们点击登录按钮时,他们必须重新输入他们的用户名/密码?

我尝试在 webz 上四处寻找,但找不到解决问题的方法,尽管我确信这很简单,我希望!

感谢您的帮助,如果格式不佳,我们深表歉意。

【问题讨论】:

    标签: ios swift facebook facebook-sdk-4.0


    【解决方案1】:

    如果您以编程方式让用户从应用程序本身注销,您可以检查以下代码。

    let loginView : LoginManager = LoginManager()
    loginView.loginBehavior = FBSDKLoginBehavior.Web
    

    这将在您的应用中打开 Facebook 登录弹出窗口,用户可以在其中登录您的应用。

    对于注销,您可以调用:

      let manager = LoginManager()
      manager.logOut()
    

    这将在应用程序中从 Facebook 注销用户,之后如果您调用 SDK 的登录方法,您将再次看到登录弹出窗口

    如果要清除配置文件和令牌,也可以在注销时调用以下代码。

     FBSDKAccessToken.setCurrentAccessToken(nil)
     FBSDKProfile.setCurrentProfile(nil)
    

    【讨论】:

    • 记住FBSDKLoginBehavior.Web 仅限于某些类型的应用程序。根据 Facebook 平台政策,并非所有类型的应用程序都可以使用此功能。如果您支持他们的标准,请检查政策,然后仅使用此标志。
    • 谢谢你真的拯救了我的一天:)
    • 别忘了import FBSDKLoginKit
    【解决方案2】:

    当您调用 logOut 时,用户将退出您的应用。至于将他们从 Facebook 中注销,我认为您不能这样做,Facebook 也不会允许这样做。用户首次通过 Facebook 授权您的应用程序时,Facebook 会将您的应用程序添加到他们授权的应用程序列表中(他们可以通过 Facebook.com 访问该页面)。当他们再次注销和登录时,他们将看到您发布图片的页面,因为他们已经授权了。他们重新授权的唯一方法是从他们的 Facebook 应用页面中删除该应用,然后再次登录您的应用。

    【讨论】:

    • 该死的,因为我想用不同的 Facebook 帐户登录,看看我的数据库是否得到正确更新。你知道吗?谢谢!
    • 哦,我明白你的意思了。如果您进入 safari 应用程序,您可以访问 Facebook.com 并注销您的帐户,登录到另一个帐户,然后重新进入您的应用程序。当您调用 Facebook 登录时弹出的 safari 扩展程序应显示登录的新用户!
    • 天才。谢谢,这完美!如果我有足够的代表,你会得到我的支持!
    • 用户在 Safari 中注销自己是不友好的。
    • Dan L 的回答对我不起作用。从我的应用程序中打开网络视图时仍然使用错误的帐户登录..
    【解决方案3】:

    当前 Facebook SDK 处理此问题的方式对我来说似乎是一个安全漏洞。如果我借用朋友的 iPad 并在我注销时使用 Facebook 登录应用程序,我应该完全退出应用程序和它用来验证我的 SFSafariViewController。而现在它仍然记住我在 SFSafariViewController 中使用 cookie。

    要从 Facebook SDK 和 SFSafariViewController 正确注销用户,我执行以下操作:

        let fbLoginManager = LoginManager()
        fbLoginManager.logOut()
        let cookies = HTTPCookieStorage.shared
        let facebookCookies = cookies.cookies(for: URL(string: "https://facebook.com/")!)
        for cookie in facebookCookies! {
            cookies.deleteCookie(cookie )
        }
    

    我真的不喜欢这个解决方案,但这是我能想到的最好的解决方案。

    【讨论】:

      【解决方案4】:

      用户 Dan L 有正确答案,他在one of my comments 中写道:

      哦,我明白你的意思了。如果您进入 safari 应用程序,您可以访问 Facebook.com 并注销您的帐户,登录到另一个帐户,然后重新进入您的应用程序。调用 Facebook 登录时弹出的 safari 扩展程序应显示登录的新用户!

      这正是我所需要的。谢谢丹 L。

      【讨论】:

      • 如果内容不是您的,习惯上将答案转换为社区 wiki。
      【解决方案5】:

      从你的 cmets 我可以看到你想要什么。

      您可以重置模拟器的内容和设置:

      点击模拟器/重置内容和设置

      【讨论】:

      • 我遇到了和你一样的问题,已经解决了:)
      猜你喜欢
      • 2018-12-29
      • 2013-04-05
      • 2021-05-24
      • 1970-01-01
      • 2017-12-18
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多