【问题标题】:Facebook connect Batch requests and FQL error problemFacebook connect Batch 请求和 FQL 错误问题
【发布时间】:2011-07-18 05:01:45
【问题描述】:

我正在开发一个带有 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,它应该一直在工作。

【问题讨论】:

    标签: iphone sql ios facebook facebook-fql


    【解决方案1】:

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

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

    -(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 );
            }
        }
    }
    

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

    【讨论】:

    • 谢谢!你知道为什么图形 API 请求像 limit 这样的参数并且因为会出现问题吗?它使用“events?limit..”而不是“events&limit..”并且它不会获得更多参数..至于“since=today”它甚至会带来旧事件! Tnx
    • 这里的 facebook 对象是什么 - [facebook requestWithGraphPath:@"me" andParams:params andHttpMethod:@"POST" andDelegate:self];是FBSession还是FBRequest?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2020-08-10
    • 2012-12-25
    • 1970-01-01
    • 2019-01-09
    • 2011-08-31
    相关资源
    最近更新 更多