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。
目前您正在为UIWebView
或WKWebView
获取cookie(如果已实施和使用)。我认为不是你的情况
【讨论】:
那么解决办法是什么? @Peter 正如我所提到的,您无权访问 SFSafariViewController 的 cookie。运行相同的案例,即通过 FB 登录,logut ,通过 Instagram 上的 FB 再次登录。 IMO 这个“已经授权”对于 FBSDK 来说是很正常的以上是关于FB最新sdk ios注销问题的主要内容,如果未能解决你的问题,请参考以下文章