【问题标题】:FB latest sdk ios logout issueFB最新sdk ios注销问题
【发布时间】:2016-11-29 09:05:32
【问题描述】:

大家好,我无法使用最新的 sdk 注销 FB,即使在注销后也显示“已授权”。这是我的注销代码。

login = [[FBSDKLoginManager alloc] init];
login.loginBehavior = FBSDKLoginBehaviorBrowser;

if ([FBSDKAccessToken currentAccessToken]) {

    [login logOut];
    [FBSDKAccessToken setCurrentAccessToken:nil];
    [FBSDKProfile setCurrentProfile:nil];
    NSLog(@"Logged out of facebook");
    NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSArray* facebookCookies = [cookies cookiesForURL:
                                [NSURL URLWithString:@"http:www.facebook.com"]];
    for (NSHTTPCookie* cookie in facebookCookies) {
        [cookies deleteCookie:cookie];
    }
}

请帮忙。

【问题讨论】:

  • 你也需要删除你的权限
  • 可以添加一些删除权限的代码
  • 尝试关闭当前会话的token信息 FBSession* session = [FBSession activeSession]; [会话 closeAndClearTokenInformation];
  • FBSession 在最近的 sdk 中不可用。

标签: ios objective-c


【解决方案1】:

这是因为您可能是通过 Safari 登录的。现在,当您尝试从应用程序登录时,它实际上已注销,但在 safari 中会话仍然存在。

【讨论】:

  • 是的,确实如此,但我已经编写了删除 cookie 的代码。
  • 我不认为它是http。它应该是https。另外,你有没有检查facebookCookies数组,数组计数是否返回0。
  • 感谢您的评论。我已经用 https 替换了 http 仍然遇到同样的问题,即使 facebookCookies 数组计数为 0,什么是正确的解决方案,请帮助。
  • 静止数组计数 0
  • 那么我认为你应该使用 webview 而不是 safari。
【解决方案2】:

我认为登录/注销(基于访问令牌)和授权您的 iOS 应用程序使用您的 FB 帐户是两件不同的事情。此链接确认,请查看https://stackoverflow.com/a/33780346/3719248

编辑:

您想这样做,当您运行此[login logOut]; 时,您的用户也会从 Safari 浏览器中注销。如果这是正确的,我认为这是不可能实现的。 FBSDK 使用SFSafariViewController,请查看link

由于reasons,作为开发人员,您无权访问SFSafariViewController 的cookie。

目前您正在为UIWebViewWKWebView 获取cookie(如果已实施和使用)。我认为不是你的情况

【讨论】:

  • 那么解决办法是什么?
  • @Peter 正如我所提到的,您无权访问 SFSafariViewController 的 cookie。运行相同的案例,即通过 FB 登录,logut ,通过 Instagram 上的 FB 再次登录。 IMO 这个“已经授权”对于 FBSDK 来说是很正常的
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
相关资源
最近更新 更多