【问题标题】:Logout from Facebook programmatically iOS以编程方式从 Facebook 注销 iOS
【发布时间】:2015-06-19 19:38:02
【问题描述】:

我正在尝试以编程方式从 Facebook 注销而不使用 FBSDKLoginButton 我有搜索我该怎么做 我找到了这个答案Can we logout facebook programatically 但问题是 FBSession 在新的 iOS FBSDK 版本中已弃用

我的问题是 有什么方法可以清除新 iOS FBSDK 版本中的 fb 会话?如果有任何方法可以以编程方式从 Facebook 注销? 或者我怎么能从FBSDKLoginButton调用注销操作

提前致谢 :)

【问题讨论】:

    标签: ios objective-c facebook facebook-sdk-4.0


    【解决方案1】:

    您有两种退出方式。 首先,正如 Inder Kumar Rathore 所建议的

    FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
    [loginManager logOut];
    

    第二个是将 currentAccessToken 设置为 nil

    [FBSDKAccessToken setCurrentAccessToken:nil];
    

    @cookiemonsta 希望第二种方法对你有用。

    【讨论】:

    • 您还应该调用: [FBSDKProfile setCurrentProfile:nil] 因为 logOut 也会调用它。在这里解释:developers.facebook.com/docs/reference/ios/current/class/…
    • 是的,亲爱的!谢谢:)
    • @mahieddine 你从 Facebook 注销了吗?你能迅速发布答案吗?请帮帮我
    • Facebook 内部在注销方法中调用[FBSDKAccessToken setCurrentAccessToken:nil],无需显式调用。本文档中提到:developers.facebook.com/docs/reference/ios/current/class/…
    • 我看到了函数是如何工作的,但我想我们需要创建实例有点奇怪。为什么他们没有将其实现为静态方法。 setCurrentAccessTokensetCurrentProfile 也是静态的 =)
    【解决方案2】:

    FBSDKLoginManager 是您的需要,它有 logOut 方法,但您可能必须使用您的 custom login

    例如

    FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
    [loginManager logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
      if (error) {
        // Process error
      } else if (result.isCancelled) {
        // Handle cancellations
      } else {
        // If you ask for multiple permissions at once, you
        // should check if specific permissions missing
        if ([result.grantedPermissions containsObject:@"email"]) {
          // Do work
        }
      }
    }];
    
    //then logout
    [loginManager logOut];
    

    【讨论】:

    • 没有FBSDKLoginManager有什么办法吗?然而,我正在使用 FBSDKLoginButton!
    • 谢谢,这也是一个解决方案,但是我更喜欢在没有 FBSDKLoginManager 的情况下这样做
    【解决方案3】:

    Swift 版本:

    FBSDKLoginManager().logOut()
    

    即使您使用FBSDKLoginButton 登录,您也可以使用FBSDKLoginManager

    【讨论】:

      【解决方案4】:

      对于 Swift 3 和 4

      我想使用这里提到的代码, How to logout user using Facebook authentication using Swift and iOS?

      HardikDG 提到了一个很好的注销答案。 您需要做的是在登录之前添加以下行,

      fbLoginManager.loginBehavior = FBSDKLoginBehavior.web
      

      在注销时使用下面的代码

      FBSDKAccessToken.setCurrent(nil)
      FBSDKProfile.setCurrent(nil)
      FBSDKLoginManager().logOut()
      

      这对我来说非常有效。

      【讨论】:

        【解决方案5】:

        Swift 3 和 Swift 4:

        import FacebookLogin
        import FacebookCore
        
        let loginManager = LoginManager()
        loginManager.logOut()
        

        【讨论】:

          【解决方案6】:

          以下将完成这项工作。

          import FBSDKLoginKit
          
          LoginManager().logOut()
          

          【讨论】:

            猜你喜欢
            • 2017-03-09
            • 1970-01-01
            • 2015-07-22
            • 1970-01-01
            • 2017-09-27
            • 1970-01-01
            • 2012-06-15
            • 1970-01-01
            • 2012-12-28
            相关资源
            最近更新 更多