登录与Facebook的登录问题iOS的sdk

问题描述:

我们已经在iOS的Facebook的登录注销问题sruck。当我使用我的应用程序登录Facebook时,它会通过“登录”和“取消”按钮提示用户许可。但是这个屏幕只在第一次出现。即一旦我们使用safari或应用程序登录,并且即使我们从Facebook注销,应用程序屏幕提示用户权限也只显示一个“确定”按钮。它不允许以不同的用户身份登录。为什么每次应用程序启动时都不显示“登录”和“取消”按钮?我尝试删除cookie并删除NSUserDefaults,但没有运气。登录与Facebook的登录问题iOS的sdk

问题是注销后,我无法登录到另一个用户的脸谱。它仍然显示为相同的用户。

我打电话下面注销功能在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

你能写出如何实现你的注销方法和你使用的代表?也许我可以帮助你,我也一直在努力与Facebook。 – 2012-02-02 13:24:07

+0

你的屏幕截图在哪里? – 2012-02-03 06:10:34

+0

对不起,我无法附上屏幕拍摄。我面临的问题是即使从我的应用程序注销后,我也无法以其他用户身份登录。我期望在注销后,当我尝试再次登录到系统时,应该有一个链接从Facebook用户名密码窗口注销。我在某些iOS Facebook应用程序中看到过相同的内容。 – user867662 2012-02-03 06:25:18

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.   
}]; 

对于注销,通过答Ellen S ..在iOS上工作得很好。

+0

嗨,我有一些问题,我有同样的问题,我注销成功完成,我无法获得新用户的登录屏幕 – 2015-02-12 12:54:02

我改性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 

该方法成功注销用户。 希望这会有所帮助!

我只是想通了,我得到了我的iPhone的设置,并得到隐私选择了Facebook选项卡,并关闭它说什么申请已请求访问你的Facebook帐户将出现在这里。有用!!!

您可以清除会话以及与下面的代码清除饼干:

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]; 
} 
+0

如果您使用iOS,则无需关闭会话并设置当您已经关闭和清除标记信息时,活动会话为零。如果你这样做,你将不得不点击两次登录。 – 2014-09-18 11:31:11

+0

同意@AtifImran。只有'closeAndClearTokenInformation'完成这项工作。 – Alex 2015-03-20 13:43:07

当登录设置为loginBehavior时,所以当你退出时,用其他账号登录,不会出现只授权,没有登录界面login.loginBehavior = FBSDKLoginBehaviorWeb;我使用脸书4.11,它的工作