适用于iOS的SDK 3.0 Beta中的FQL

Seb*_*ian 3 facebook-fql fql.multiquery ios facebook-ios-sdk

我无法requestWithMethodName在适用于iOS的新3.0 Beta SDK中的任何位置找到该方法.你们放弃它了吗?如果是这样,我们现在应该如何向API发送fql查询?或者那些被弃用了?

Jas*_*ark 5

您可以使用以下方法向方法名称发出请求

[[[FBRequest alloc] initWithSession:...
                         restMethod:... 
                         parameters:... 
                         HTTPMethod:...]
 startWithCompletionHandler:...];
Run Code Online (Sandbox Code Playgroud)

但是,您也可以使用FQL图形对象进行FQL查询,如下所示:

FBRequest *fql = [FBRequest requestForGraphPath:@"fql"];
[fql.parameters setObject:@"SELECT uid, name, pic_square FROM user WHERE uid = me()"
                          @"OR uid IN (SELECT uid2 FROM friend WHERE uid1 = me())"
                   forKey:@"q"];

[fql startWithCompletionHandler:^(FBRequestConnection *connection, 
                                  id result, 
                                  NSError *error) {
    if (result) {
        NSLog(@"result:%@", result);
    }
}];
Run Code Online (Sandbox Code Playgroud)

最后,如果要批处理多个请求,而不是在FBRequest对象上调用start,则可以FBRequestConnection在调用start之前创建一个对象并添加多个请求,如下所示:

FBRequestConnection *conn = [[FBRequestConnection alloc] init];
[conn addRequest:fqlRequest1 completionHandler:^(FBRequestConnection *connection, 
                                                 id result,
                                                 NSError *error) {
    if (result) {
        NSLog(@"result:%@", result);
    }
}];

[conn addRequest:fqlRequest2 completionHandler:^(FBRequestConnection *connection,
                                                 id result,
                                                 NSError *error) {
    if (result) {
        NSLog(@"result:%@", result);
    }
}];

[conn start];
Run Code Online (Sandbox Code Playgroud)

SDK负责将请求序列化为对服务器的单个批处理请求,以及解析响应并使用匹配的结果或错误调用正确的处理程序.

注意

如果您可以使用图形或其他API来获得相同的结果,则使用图形API比使用其余API更受欢迎.我们正在弃用旧的rest API