我们在iOS facebook登录注销问题上遇到了麻烦。当我使用我的应用程序登录Facebook时,它将通过“登录”和“取消”按钮提示用户权限。但这个屏幕只在第一次出现。即一旦我们使用safari或应用程序登录,即使我们从Facebook注销,应用程序提示用户权限的屏幕也只显示“确定”按钮。它不允许以其他用户身份登录。为什么每次启动应用程序时都不显示带有“登录”和“取消”按钮的屏幕?我尝试删除cookie并删除NSUserDefaults,但没有运气。
问题是退出后,我无法以另一个用户身份登录facebook。它仍然显示为同一个用户。
我在sdk中调用以下注销功能
(void)logout:(id<FBSessionDelegate>)delegate {
self.sessionDelegate = delegate;
[_accessToken release];
_accessToken = nil;
[_expirationDate release];
_expirationDate = nil;
NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray* facebookCookies = [cookies cookiesForURL:
[NSURL URLWithString:@"http://login.facebook.com"]];
for (NSHTTPCookie* cookie in facebookCookies) {
[cookies deleteCookie:cookie];
}
if ([self.sessionDelegate respondsToSelector:@selector(fbDidLogout)]) {
[_sessionDelegate fbDidLogout];
}
}
同样在fbDidLogout委托函数中,我删除了所有NSUserDefaults对象
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]) {
[defaults removeObjectForKey:@"FBAccessTokenKey"];
[defaults removeObjectForKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
regrds 谢哈布
答案 0 :(得分:7)
您可以使用以下代码清除会话以及清除Cookie:
FBSession* session = [FBSession activeSession];
[session closeAndClearTokenInformation];
[session close];
[FBSession setActiveSession:nil];
NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"https://facebook.com/"]];
for (NSHTTPCookie* cookie in facebookCookies) {
[cookies deleteCookie:cookie];
}
答案 1 :(得分:5)
我修改了 fbDidLogout 方法并且它有效,这里是代码:
-(void) fbDidLogout
{
NSLog(@"Logged out of facebook");
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies])
{
NSString* domainName = [cookie domain];
NSRange domainRange = [domainName rangeOfString:@"facebook"];
if(domainRange.length > 0)
{
[storage deleteCookie:cookie];
}
}
}//End of Method
该方法成功注销用户。 希望这会有所帮助!
答案 2 :(得分:5)
FBSession openWithBehavior:completionHandler:可以使用..
FBSession *fbSession = [[FBSession alloc] initWithPermissions:[NSArray arrayWithObjects:@"email",@"publish_actions",@"publish_stream", nil]];
[fbSession openWithBehavior:FBSessionLoginBehaviorForcingWebView completionHandler:^(FBSession *session,FBSessionState state, NSError *error){
[FBSession setActiveSession:fbSession]; // Retain the Active Session.
}];
对于Logging out,Ellen S的Ans适用于iOS。
答案 3 :(得分:2)
我只是弄明白我已经进入我的iPhone设置并获得隐私选择了Facebook标签并关闭它所说的请求访问你的Facebook帐户的应用程序将出现在这里。有用!!!
答案 4 :(得分:0)
当登录设置为loginBehavior时,所以退出时,与其他帐户登录,不会出现授权,没有登录界面login.loginBehavior = FBSDKLoginBehaviorWeb;我使用facebook 4.11,它的工作