【问题标题】:How to log out from facebook using facebook sdk in IOS如何在 IOS 中使用 facebook sdk 从 facebook 注销
【发布时间】:2012-09-11 11:04:25
【问题描述】:

我在我的应用程序中使用 facebook sdk。我用facebook简单地登录了:

FBLoginView *loginview = [[FBLoginView alloc] initWithPermissions:[NSArray arrayWithObject:@"publish_actions"]];

UIImage *loginImage = [UIImage imageNamed:@"login_facebook_button.png"];

// loginview.backgroundColor = [UIColor redColor];
loginview.frame = CGRectMake(15, 294, loginImage.size.width, loginImage.size.height);

for (id obj in loginview.subviews)
{
    if ([obj isKindOfClass:[UIButton class]])
    {
        UIButton * loginButton =  obj;

        [loginButton setBackgroundImage:loginImage forState:UIControlStateNormal];
        [loginButton setBackgroundImage:nil forState:UIControlStateSelected];
        [loginButton setBackgroundImage:nil forState:UIControlStateHighlighted];
        [loginButton sizeToFit];
    }
    if ([obj isKindOfClass:[UILabel class]])
    {
        UILabel * loginLabel =  obj;
        loginLabel.text = [Lang get:@"SIGN_IN_WITH_FACEBOOK"];
        loginLabel.textAlignment = UITextAlignmentCenter;
        [loginLabel setTextColor:[UIColor colorWithRed:228.0/255.0 green:228.0/255.0 blue:228.0/255.0 alpha:1.0]];
        [loginLabel setShadowColor:[UIColor colorWithRed:127.0/255.0 green:127.0/255.0 blue:127.0/255.0 alpha:1.0]];
        loginLabel.frame = CGRectMake(0, 0, loginImage.size.width, loginImage.size.height);
    }
}

loginview.delegate = self;

[self.view addSubview:loginview];

我已经正常登录了。但是当我尝试使用这个退出时

[FBSession.activeSession closeAndClearTokenInformation];

我得到了异常,它没有写出真正的错误。此时我的应用程序崩溃了。

但它实际上清除了令牌,因为崩溃后它已经注销。

那么我做错了什么?

谢谢

【问题讨论】:

    标签: objective-c facebook ios5


    【解决方案1】:
    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];
    }
    

    【讨论】:

    • 是的,我也是。谢谢大家!
    • 很好的解决方案。谢谢
    【解决方案2】:

    使用这个:

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

    参考ios-facebook-connect-logout-not-deleting-login-details链接。

    【讨论】:

    • 我正在使用更新的 facebook sdk 3.0,所以他们将登录包装在 Loginview 控制器中。所以我什么都没有,这种方法不起作用。感谢您的回复
    猜你喜欢
    • 1970-01-01
    • 2013-04-12
    • 2011-05-19
    • 2015-08-30
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    相关资源
    最近更新 更多