适用于 iOS 的 Facebook SDK 3.0:无法为批处理请求设置omit_response_on_success



似乎对于批处理请求,所有参数都作为relative_url的一部分进行转义,如果omit_response_on_success设置为 @(false),应用程序将崩溃并显示以下消息: -[__NSCFNumber长度]:无法识别的选择器

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?omit_response_on_success=0" ,则这些操作将不输出。有什么想法吗?

是的,SDK 目前不支持此选项,请务必为此在 https://developers.facebook.com/bugs 上提交功能请求。

这不应该是一个参数,而应该是一个键值,如文档中所述。我相信问题是如何在iOS 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

最新更新