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