在iOS应用中从Facebook注销 [英] Logout from facebook in iOS app

查看:175
本文介绍了在iOS应用中从Facebook注销的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个简单的iOS应用程序,用于登录Facebook,获取我和朋友的详细信息,从Facebook注销.

I am creating a simple iOS App that Login to facebook, Fetch self and friends details, Logout from facebook.

现在从Facebook登录并获取自我&朋友的详细信息正常,但我无法从Facebook上完全注销.每当我注销然后重新登录时-我看到的是授权"屏幕,而不是Facebook(Web)的身份验证登录"屏幕.

Now Login from Facebook and Fetching self & friends details is working ok, but I am not able to logout fully from facebook. Whenever I logout and then Login back - I see the Authorization screen instead of Authentication Login screen of Facebook (of Web).

下面是我的代码-您能否查看我从登录到获取自我&的步骤中是否存在问题.朋友详细信息并从Facebook注销

Below is my code - can you please see if there is something wrong in the steps I have performed from Login, to Fetching self & friends details and Logging out from facebook

1)使用以下方法登录Facebook

1) Login to Facebook using below method

- (void)openSession
{
    if(FBSession.activeSession.isOpen)
    {
        [FBSession openActiveSessionWithReadPermissions:nil
                                           allowLoginUI:NO
                                      completionHandler:
         ^(FBSession *session,
           FBSessionState state, NSError *error)
         {
             [self sessionStateChanged:session state:state error:error];
         }];
    }
    else
    {
        [FBSession openActiveSessionWithReadPermissions:nil
                                           allowLoginUI:YES         
                                      completionHandler:
         ^(FBSession *session,
           FBSessionState state, NSError *error)
         {
             [self sessionStateChanged:session state:state error:error];
         }];
    }
}

- (void)sessionStateChanged:(FBSession *)session
                      state:(FBSessionState) state
                      error:(NSError *)error
{
    switch (state) {
        case FBSessionStateOpen:
        {
            // Connection is Open
            lblStatus.text = @"FBSessionStateOpen";
        }
            break;
        case FBSessionStateClosed:
        case FBSessionStateClosedLoginFailed:
        {
            [FBSession.activeSession closeAndClearTokenInformation];

            // Connection is Closed / Login Failed
            lblStatus.text = @"FBSessionStateClosed";
        }
            break;
        default:
            break;
    }
}

2)使用以下方法获取自己的详细信息和朋友的详细信息

2) Fetching self details and Friends details using below method

if (FBSession.activeSession.isOpen)
{
[[FBRequest requestForMe] startWithCompletionHandler:
 ^(FBRequestConnection *connection,
   NSDictionary<FBGraphUser> *user,
   NSError *error) {
     if (!error) {
         self.lblSelfDetails.text = user.name;
         self.profilePicture.profileID = user.id;
     }
 }];
}

FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,birthday"];

[friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
    NSArray *data = [result objectForKey:@"data"];

    for (FBGraphObject<FBGraphUser> *friend in data)
    {
        NSLog(@"%@:%@", [friend name],[friend birthday]);
    }
}];

3)使用以下方法注销

3) Logout using below method

- (IBAction)logout:(id)sender
{
    [FBSession.activeSession closeAndClearTokenInformation];
}

推荐答案

请使用此方法从Facebook成功登录

Please use this method to logut successfully from the facebook

- (void)logout:(id<FBSessionDelegate>)delegate {

      _sessionDelegate = delegate;

      NSMutableDictionary * params = [[NSMutableDictionary alloc] init];
      [self requestWithMethodName:@"auth.expireSession"
                        andParams:params andHttpMethod:@"GET"
                      andDelegate:nil];

      [params release];
      [_accessToken release];
      _accessToken = nil;
      [_expirationDate release];
      _expirationDate = nil;

      NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
      NSArray* facebookCookies = [cookies cookiesForURL:
        [NSURL URLWithString:@"https://m.facebook.com"]];

      for (NSHTTPCookie* cookie in facebookCookies) {
        [cookies deleteCookie:cookie];
      }

      if ([self.sessionDelegate respondsToSelector:@selector(fbDidLogout)]) {
        [_sessionDelegate fbDidLogout];
      }
    }

希望这对您有帮助!

这篇关于在iOS应用中从Facebook注销的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆