繁体   English   中英

Facebook iOS sdk登录注销问题

[英]Login Logout issue with facebook iOS sdk

我们在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];
}

重新组织什哈布

您可以使用以下代码清除会话以及清除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

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

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。

我只是弄明白我已经进入我的iPhone设置并获得隐私选择Facebook选项卡并关闭它所说的请求访问您的Facebook帐户的应用程序将出现在这里。 有用!!!

当登录设置为loginBehavior时,所以当你退出时,用其他帐户登录,不会只出现授权,没有登录界面login.loginBehavior = FBSDKLoginBehaviorWeb; 我使用facebook 4.11,这是工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM