在线好友状态 - Facebook SDK 3

5

使用Facebook SDK能否查找我的朋友的在线状态(在线、离线或错误)?

使用FQL,我可以这样做:

   SELECT uid, name,pic_small,pic_big,online_presence FROM user
  WHERE online_presence IN ('active') AND uid IN
   (SELECT uid2 FROM friend WHERE uid1 = me())order by name

但是,在facebook SDK中有没有一种方法可以做到这一点,可能使用类似于这样的东西:
  [FBRequest requestForGraphPath:@"some/end/point/that/I/am/missing"]

需要任何帮助都会感激。谢谢。


我这里也有同样的问题。 - Anand
2个回答

2

很抱歉晚了才在这里发布...我已经自己解决了这个问题,以下是我的解决方案:

- (void)getFriendsOnlinePresence
{

NSString* fql1 = [NSString stringWithFormat:@"SELECT uid,pic_square, name,online_presence FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) ORDER BY name"];
NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                fql1, @"q",
                                nil];
[FBSession openActiveSessionWithAllowLoginUI:NO];
[FBRequestConnection startWithGraphPath:@"fql"
                             parameters:params
                             HTTPMethod:@"GET"
                      completionHandler:^(FBRequestConnection *connection,
                                          id result,
                                          NSError *error) {
                          if (error) {
                              NSLog(@"Error: %@", [error localizedDescription]);
                          } else {
                              NSLog(@"Result: %@", result);
                              }
                          }
//Notify via notification center
                      }];

}

0
如果您可以在FQL中完成它,那么让它在SDK中工作只是找到正确查询的问题。您的查询
SELECT uid, name,pic_small,pic_big,online_presence FROM user
  WHERE online_presence IN ('active') AND uid IN
   (SELECT uid2 FROM friend WHERE uid1 = me()) order by name

被执行为graph.facebook.com/fql?q=SELECT uid, name,pic_small,pic_big,online_presence FROM user WHERE online_presence IN ('active') AND uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) order by name基本上是HTTP GET /fql?q=<QUERY>

所以我相信只需要在requestForGraphPath中设置路径为fql

FBRequest *fql = [FBRequest requestForGraphPath:@"fql"];
[fql.parameters setObject:@"SELECT uid, name,pic_small,pic_big,online_presence FROM user WHERE online_presence IN ('active') "
                          @"AND uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) order by name"
                   forKey:@"q"]

最新的文档显示了在FBRequestConnection下有使用startWithGraphPath的示例。
NSString *query =
    @"SELECT uid, name,pic_small,pic_big,online_presence FROM user WHERE online_presence IN ('active') "
    @"AND uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) order by name";
    // Set up the query parameter
    NSDictionary *queryParam = @{ @"q": query };
    // Make the API request that uses FQL
    [FBRequestConnection startWithGraphPath:@"/fql"
                                 parameters:queryParam
                                 HTTPMethod:@"GET"
                          completionHandler:^(FBRequestConnection *connection,
                                              id result,
                                              NSError *error) {
        if (error) {
            NSLog(@"Error: %@", [error localizedDescription]);
        } else {
            NSLog(@"Result: %@", result);
        }
    }];

来源:https://developers.facebook.com/docs/howtos/run-fql-queries-ios-sdk/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接