从 Facebook 注销 parse.com 用户失败

Failed logout parse.com user from Facebook

我在游戏中使用

登录Facebook
PFFacebookUtils logInInBackgroundWithReadPermissions:@[@"email"]
    block:^(PFUser *user, NSError *error)

但是当我尝试注销,然后使用其他用户登录时,我看到 Facebook 屏幕显示:“您已经授权 [应用程序名称]»。

即使我重新安装应用程序,此消息也不会消失。 我尝试用不同的方式注销这些结果:

  1. 没有结果,出现«您已经授权»。

    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    if ( [FBSDKAccessToken currentAccessToken] ){
        [login logOut];
        NSLog(@"The user is no longer associated with their Facebook account.");
    }
    
  2. 无法运行申请,因为Facebook SDK v.4中没有会话

    [PFFacebookUtils.session closeAndClearTokenInformation];
    [PFUser logOut];
    
  3. 没有结果,出现«您已经授权»。

    [PFFacebookUtils unlinkUserInBackground:[PFUser currentUser] 
        block:^(BOOL succeeded, NSError *error) {
        if (succeeded) {
            NSLog(@"The user is no longer associated with their Facebook account.");
        }
        else{
            NSLog(@"Failure logout FB: %@", error);
        }
    }];
    [PFUser logOut];
    

我还在日志中收到错误消息:

[Error]: username xxxx already taken (Code: 202, Version: 1.9.1).

我看到了这个 。它说,问题已在 Facebook SDK 版本 >= 4.4 中解决。但我使用 Parse SDK v.1.9.1 和 Facebook SDK v.4.7,并得到同样的失败。 我能做错什么吗?

更新: 谢谢jbehrens94's回复,这个版本是对的:

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/permissions"
                                   parameters:nil
                                   HTTPMethod:@"DELETE"]
 startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
     if (!error)
         NSLog(@"Revoking is successfull");
     else
         NSLog(@"Failure revoking: %@", error);
 }];

很有魅力!

这是因为 Facebook 通过 OAuth 对用户进行身份验证的方式。当有人使用 Facebook 登录您的应用程序时,该应用程序会向 Facebook 发出请求以获取对 Facebook 数据的访问权限。 Facebook 将该应用程序添加到具有特定访问权限的用户个人资料中,因此您能够重新登录 Facebook 并且看不到该屏幕的唯一方法是从您的 Facebook 设置中手动删除该应用程序。

您链接到的 question/post 描述正确,我引用:

Actually there is a difference between Revoking Login (letting people completely de-authorizing an app, or revoking login) and Logging out an user from his/her Facebook account.