用facebook iOS sdklogin注销问题
我们已经注意到iOS的Facebooklogin注销问题。 当我使用我的应用程序loginFacebook时,它会提示用户input“login”和“取消”button。 但是这个屏幕只出现在第一次。 即一旦我们使用safari或应用程序login,即使我们从Facebook注销,应用程序屏幕提示用户权限只显示一个“确定”button。 它不允许以不同的用户身份login。 为什么每次应用程序启动时都不显示“login”和“取消”button? 我尝试删除cookie和删除NSUserDefaults,但没有运气。
问题是注销后,我无法login到另一个用户的脸谱。 它仍然显示为相同的用户。
我在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]; }
reghads Shihab
FBSession的openWithBe行为: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的Ans ..适用于iOS的罚款。
您可以清除会话,并使用以下代码清除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]; }
我修改了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的设置,并得到隐私select了Facebook选项卡,并closures它说什么请求访问您的Facebook帐户的应用程序将出现在这里。 有用!!!
当login设置为loginBehavior时,所以当你退出时,用其他账号login,不会出现只有授权的情况,没有login界面login.loginBehavior = FBSDKLoginBehaviorWeb; 我使用脸谱4.11,这是工作