Facebook连接批处理请求和FQL错误问题

时间:2011-03-18 14:05:09

标签: iphone sql ios facebook facebook-fql

我正在使用FB connect开发iPhone iOS应用程序。

我正在尝试为每个朋友获取大量数据,并且需要多个请求。

我想知道在iOS SDK中是否有使用批处理请求的方式?

和FQL多查询的另一个问题。以下查询仅适用于一位朋友的限制!怪异。

SELECT eid FROM event_member WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 2)

它返回错误The operation couldn’t be completed. (facebookErrDomain error 1.) 根据这个example of facebook它应该一直有效。

1 个答案:

答案 0 :(得分:14)

您可以使用Facebook iOS SDK进行批量请求,但您需要自己准备JSON请求。这是一个例子:

  • 首先,创建一个包含2个JSON请求的JSON数组字符串(请参阅http://developers.facebook.com/docs/api/batch)。您可以使用首选的JSON API来创建这些字符串。
  • 其次,使用映射到JSON请求字符串的“batch”键创建参数字典。
  • 然后,发送请求。请注意,您需要在requestWithGraphPath中添加一些内容。我只是把“我”(这个请求不予考虑)。您还必须将其作为POST http方法发送。
  • 最后,等待请求中的响应数组:didLoad。

-(void) prepareMyBatchRequest {
    NSString *jsonRequest1 = @"{ \"method\": \"GET\", \"relative_url\": \"me/friends\" }";
    NSString *jsonRequest2 = @"{ \"method\": \"GET\", \"relative_url\": \"me/albums\" }";
    NSString *jsonRequestsArray = [NSString stringWithFormat:@"[ %@, %@ ]", jsonRequest1, jsonRequest2];
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:jsonRequestsArray forKey:@"batch"];
    [facebook requestWithGraphPath:@"me" andParams:params andHttpMethod:@"POST" andDelegate:self];
}

- (void)request:(FBRequest *)request didLoad:(id)result {
    NSArray *allResponses = result;
    for ( int i=0; i < [allResponses count]; i++ ) {
        NSDictionary *response = [allResponses objectAtIndex:i];
        int httpCode = [[response objectForKey:@"code"] intValue];
        NSString *jsonResponse = [response objectForKey:@"body"];
        if ( httpCode != 200 ) {
            NSLog( @"Facebook request error: code: %d  message: %@", httpCode, jsonResponse );
        } else {
            NSLog( @"Facebook response: %@", jsonResponse );
        }
    }
}

关于你的其他问题,我不知道(尝试在不同的帖子中提出其他问题,以便更容易跟进)。