【问题标题】:iPhone: Facebook logout feature does not workingiPhone:Facebook 注销功能不起作用
【发布时间】:2012-06-25 10:12:12
【问题描述】:

我正在使用 FBConnct 实现 Facebook 集成,它工作正常,但是当我 想从 Facebook 注销它不起作用。

我的代码如下:

- (IBAction)logOutbuttonPressed:(id)sender { 
        [Facebook logout:self];
        }
        - (void)fbDidLogout {


            NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
            [defaults removeObjectForKey:@"FBAccessTokenKey"];
            [defaults removeObjectForKey:@"FBExpirationDateKey"];
            NSLog(@" after %@",facebook.accessToken);
            NSLog(@" date%@",facebook.expirationDate);
            [defaults synchronize];
          }


        - (void)logout:(id<FBSessionDelegate>)delegate {
          [self logout];

          if (delegate != self.sessionDelegate &&
            [delegate respondsToSelector:@selector(fbDidLogout)]) {
            [delegate fbDidLogout];
          }

【问题讨论】:

    标签: iphone objective-c ios5 fbconnect


    【解决方案1】:
    +(void)fbDidLogout
    {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    
        if ([defaults objectForKey:@"FBAccessTokenKey"]) 
        {
            [defaults removeObjectForKey:@"FBAccessTokenKey"];
            [defaults removeObjectForKey:@"FBExpirationDateKey"];
            [defaults synchronize];
        }
    
        // Hide the publish button.
    
        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];
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      您还需要为 facebook 注销实现此代码

         - (void)fbDidLogout {
      
      
              NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
              [defaults removeObjectForKey:@"FBAccessTokenKey"];
              [defaults removeObjectForKey:@"FBExpirationDateKey"];
              NSLog(@" after %@",facebook.accessToken);
              NSLog(@" date%@",facebook.expirationDate);
              [defaults synchronize];
      
          //        Finding the Facebook Cookies and deleting them
          NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
          NSArray* facebookCookies = [cookies cookiesForURL:
                                      [NSURL URLWithString:@"http://login.facebook.com"]];
          for (NSHTTPCookie* cookie in facebookCookies) {
              [cookies deleteCookie:cookie];
          }
          fbGraph = nil;
            }
      

      试试这个 导入'FBConnect.h' 在你的第二个视图控制器中

      然后.......

      FBSession *session = [FBSession session]; [session logout];
      

      【讨论】:

      • 您也应该删除 cookie 以从 facebook 注销并将 graph api 访问令牌设为 nil
      • - (void)fbDidLogout 保留在调用注销方法的这个方法中
      • 对不起,我使用的是 FBConnct 方法
      • 检查我更新的答案。您应该使用什么方法删除 cookie 以从 Facebook 注销
      【解决方案3】:

      调用此方法从 facebook 注销。

          - (void)logOutFB {
      
          fbGraph.accessToken = nil;
          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];
              }
          }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多