Facebook sdk 4.1.0 注销不起作用

Posted

技术标签:

【中文标题】Facebook sdk 4.1.0 注销不起作用【英文标题】:Facebook sdk 4.1.0 Logout not working 【发布时间】:2015-11-08 09:48:23 【问题描述】:

我正在使用以下代码从应用程序中注销。

   [[FBSDKLoginManager new] logOut];

   if ([FBSDKAccessToken currentAccessToken]) 
      [FBSDKAccessToken setCurrentAccessToken:nil];
      [FBSDKProfile setCurrentProfile:nil];
   

仍然选择旧的个人资料进行登录。如果我杀死该应用程序并重新启动,那么它工作正常。

任何建议我做错了什么?

登录代码 -

         FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];         
     [login logInWithReadPermissions:@[@"user_birthday",@"public_profile",@"user_friends",@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) 

        if (error) 
           // Process error
         else if (result.isCancelled) 
           // Handle cancellations
         else 
           if ([result.grantedPermissions containsObject:@"email"]) 

              // Do work
              NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/me?access_token=%@",result.token.tokenString]]];

              //Start the request for the data
              [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) 
                 NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                 NSDictionary *jsonDict = [jsonString JSONValue];
                 [self getFBUserDetailFinished:jsonDict];
              ];
           
        
     ];

【问题讨论】:

您是说这段代码使用旧配置文件登录而不是注销?请说明此代码执行后的分步场景。 我正在使用登录管理器进行登录,一切正常,并且有一个用于注销当前配置文件的按钮。对于该按钮,我正在使用此代码。当我再次登录时,它会选择以前的登录配置文件,而不是当前登录的配置文件。如果我杀死该应用程序并重新开始,那么它会选择当前配置文件..希望你现在得到... 我怀疑这可能与您的登录方法而不是注销有关,所以您能否也显示您的登录代码? 你打开safari浏览器还是webview? @SanitLee 添加了登录代码。 【参考方案1】:

使用此代码:

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut];

另一种方式:您在注销方法调用后获取 facebook 用户信息,然后您第二次登录,然后在获取用户数据时获取问题。

- (IBAction)btnFacebookPressed:(id)sender 
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    [login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
     
         if (error)
         
             // Process error
         
         else if (result.isCancelled)
         
             // Handle cancellations
         
         else
         
             if ([result.grantedPermissions containsObject:@"email"])
             
                 NSLog(@"result is:%@",result);
                 [self fetchUserInfo];
                 [login logOut];
             
         
     ];


-(void)fetchUserInfo

    if ([FBSDKAccessToken currentAccessToken])
    
        NSLog(@"Token is available : %@",[[FBSDKAccessToken currentAccessToken]tokenString]);

        [[[FBSDKGraphRequest alloc] initWithGraphpath:@"me" parameters:@@"fields": @"id, name, link, first_name, last_name, picture.type(large), email, birthday, bio ,location ,friends ,hometown , friendlists"]
         startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
             if (!error)
             
                 NSLog(@"resultis:%@",result);
             
             else
             
                 NSLog(@"Error %@",error);
             
         ];

    


【讨论】:

以上是关于Facebook sdk 4.1.0 注销不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Facebook iOS SDK 3.1.1“closeAndClearTokenInformation”方法不起作用

Facebook-connect:无法使用PHP SDK + JS SDK注销

IOS Facebook好友邀请在facebook sdk中不起作用

Facebook 登录在 IOS SDK 中不起作用

iOS - Facebook SDK allowLoginUI 不起作用

Facebook iOS SDK 登录不起作用 - NSException