适用于iOS的Facebook SDK 3.0:Can';t设置批处理请求成功时忽略响应

适用于iOS的Facebook SDK 3.0:Can';t设置批处理请求成功时忽略响应,ios,facebook-graph-api,facebook-ios-sdk,facebook-batch-request,Ios,Facebook Graph Api,Facebook Ios Sdk,Facebook Batch Request,似乎对于批处理请求,所有参数都作为相对url的一部分转义,如果成功时忽略响应设置为@(false),应用程序将崩溃,并显示以下消息:-[\u NSCFNumber length]:无法识别的选择器 NSDictionary *parameters = [NSMutableDictionary dictionaryWithObjectsAndKeys: @(false), @"omit_response_on_success", nil]; FBRequest *request1 = [FBRe

似乎对于批处理请求,所有参数都作为相对url的一部分转义,如果成功时忽略响应设置为@(false),应用程序将崩溃,并显示以下消息:-[\u NSCFNumber length]:无法识别的选择器

NSDictionary *parameters = [NSMutableDictionary dictionaryWithObjectsAndKeys: @(false), @"omit_response_on_success", nil];

FBRequest *request1 = [FBRequest requestWithGraphPath:self.graphPath
                                          parameters:parameters
                                          HTTPMethod:nil];

[newConnection addRequest:request1 completionHandler:handler batchEntryName:@"entryName"]; 

如果graphPath设置为
@“me/home?忽略\u成功时的响应\u=0”
,则此操作将不会输出这些内容。有什么想法吗?

不应该是参数,而是请求JSON正文中的键值,如中所述。我认为问题在于如何在iOS SDK中设置该键值,因为我们没有访问请求主体的权限。据我所知,没有办法做到这一点,但我不确定这是否是一个bug。

是的,SDK目前不支持此选项,请务必为此提交一个功能请求。

Facebook不允许我们使用iOS SDK设置此标志,这非常恼人。我花了几个小时想办法,这是我想出的一个小技巧。它应该相对安全。只需使用RSFBRequestConnection而不是FBRequestConnection:

@interface RSFBRequestConnection : FBRequestConnection

@end

@implementation RSFBRequestConnection

- (NSMutableURLRequest *)urlRequest
{
    NSMutableURLRequest *request = [super urlRequest];

    NSData *body = request.HTTPBody;
    NSString *bodyStr = [[NSString alloc] initWithData:body encoding:NSUTF8StringEncoding];
    NSLog(@"%@", bodyStr);

    NSString *fixed = [bodyStr stringByReplacingOccurrencesOfString:@"\"relative_url\"" withString:@"\"omit_response_on_success\":false,\"relative_url\""];

    request.HTTPBody = [fixed dataUsingEncoding:NSUTF8StringEncoding];

    return request;
}

@end

3.0版本是Facebook SDK还是iOS SDK?它是今天发布的Facebook SDK 3.0。