Ios 如何使用Parse查询用户中的Facebook好友?

Ios 如何使用Parse查询用户中的Facebook好友?,ios,facebook,parse-platform,Ios,Facebook,Parse Platform,我使用Parse作为我的数据库。我想访问_Users类,查看我的Facebook好友是否正在使用该应用程序(在类_User中)。我刚读过,发现你不能再保存好友列表了 到目前为止,我的做法是: 我首先获取朋友的FB ID,然后在_User中查询。但是,我注意到FaceBookID保存为authData。除了创建一个将FaceBookId复制为字符串的新列之外,我如何使用FaceBookId查询我的_用户类 // Send request to Facebook [[FBRequest re

我使用Parse作为我的数据库。我想访问_Users类,查看我的Facebook好友是否正在使用该应用程序(在类_User中)。我刚读过,发现你不能再保存好友列表了

到目前为止,我的做法是:

我首先获取朋友的FB ID,然后在_User中查询。但是,我注意到FaceBookID保存为authData。除了创建一个将FaceBookId复制为字符串的新列之外,我如何使用FaceBookId查询我的_用户类

// Send request to Facebook
    [[FBRequest requestForMe] startWithCompletionHandler: ^(FBRequestConnection *connection, id result, NSError *error) {

        [FBRequestConnection startForMyFriendsWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
            if (!error) {
                // result will contain an array with your user's friends in the "data" key
                NSArray *friendObjects = [result objectForKey:@"data"];
                NSMutableArray *friendIds = [NSMutableArray arrayWithCapacity:friendObjects.count];
                // Create a list of friends' Facebook IDs
                for (NSDictionary *friendObject in friendObjects) {
                    [friendIds addObject:[friendObject objectForKey:@"id"]];
                }
                self.fbfriendList = [NSMutableArray arrayWithArray:friendObjects];

                    PFQuery *friendQuery = [ParseUser query];

//PROBLEM is here where the fbId in my _User class is saved as authData
                    [friendQuery whereKey:@"fbID" containedIn:friendIds];

                    NSArray *friendUsers = [friendQuery findObjects];
                self.fbfriendList = friendObjects;  
            }
        }]; 
    }];

默认情况下,Parse用户的Facebook ID是私有的,但您可以让其他用户访问它们

要实现这一点,您可以使用facebookapi获取用户的Facebook ID,并将其分配给Parse用户上的一个字段。然后,您可以在用户集合上构造一个查询,以获得Facebook ID位于用户朋友列表中的解析用户列表

当您使用Facebook登录时,您应该这样做:

// When your user logs in, immediately get and store its Facebook ID
[PFFacebookUtils logInWithPermissions:permissionsArray
                                block:^(PFUser *user, NSError *error) {
  if (user) {
    [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
      if (!error) {
        // Store the current user's Facebook ID on the user
        [[PFUser currentUser] setObject:[result objectForKey:@"id"]
                                 forKey:@"fbId"];
        [[PFUser currentUser] saveInBackground];
      }
    }];
  }
}];
然后,当您准备搜索用户的朋友时,您将发出另一个请求:

// Issue a Facebook Graph API request to get your user's friend list
[FBRequestConnection startForMyFriendsWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
  if (!error) {
    // result will contain an array with your user's friends in the "data" key
    NSArray *friendObjects = [result objectForKey:@"data"];
    NSMutableArray *friendIds = [NSMutableArray arrayWithCapacity:friendObjects.count];
    // Create a list of friends' Facebook IDs
    for (NSDictionary *friendObject in friendObjects) {
        [friendIds addObject:[friendObject objectForKey:@"id"]];
    }

    // Construct a PFUser query that will find friends whose facebook ids
    // are contained in the current user's friend list.
    PFQuery *friendQuery = [PFUser query];
    [friendQuery whereKey:@"fbId" containedIn:friendIds];

    NSArray *friendUsers = [friendQuery findObjects];
  }
}];

致以最诚挚的问候,

这是唯一的方法吗?@EricChuang是我知道的唯一方法。我在这方面取得了一些成功,但我想知道一些不同的事情。有没有办法在云代码上实现这一点?类似于afterSave on_User,它可以向应用程序上的所有用户发送推送消息,这些用户的好友与其好友加入的fbId匹配?@user717452是的,您可以通过云代码进行推送。不过,我不知道这道菜的配方。您应该在解析文档中搜索它的等价物。