3

requestWithMethodName我在适用于 iOS 的新 3.0 Beta SDK 中的任何地方都找不到该方法。你们放弃了吗?如果是,我们现在应该如何将 fql 查询发送到 API?或者那些被弃用了?

4

1 回答 1

5

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

[[[FBRequest alloc] initWithSession:...
                         restMethod:... 
                         parameters:... 
                         HTTPMethod:...]
 startWithCompletionHandler:...];

但是,您也可以使用 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);
    }
}];

最后,如果您想批量处理多个请求,而不是在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];

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

笔记

如果您可以使用图形 API 或 REST API 来获得相同的结果,则使用图形 API 优于使用 REST API。我们正在弃用旧的 rest API

于 2012-07-15T03:01:54.983 回答