FB最新sdk ios注销问题

Posted

技术标签:

【中文标题】FB最新sdk ios注销问题【英文标题】:FB latest sdk ios logout issue 【发布时间】: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 中不可用。 【参考方案1】:

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

【讨论】:

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

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

编辑:

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

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

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

【讨论】:

那么解决办法是什么? @Peter 正如我所提到的,您无权访问 SFSafariViewController 的 cookie。运行相同的案例,即通过 FB 登录,logut ,通过 Instagram 上的 FB 再次登录。 IMO 这个“已经授权”对于 FBSDK 来说是很正常的

以上是关于FB最新sdk ios注销问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# sdk 进行 FB 注销

如何在不刷新页面的情况下使用 JS SDK 检测从 fb 注销

最新的 Facebook SDK 未从 App 注销

facebook-ios-sdk 注销问题

facebook iOS sdk的登录注销问题

以编程方式从 iOS 中的 facebook SDK 注销