的Facebook SDK 3.0的iOS:无法设置omit_response_on_success批量请求
问题描述:
看来批量的要求,所有参数都转义为relative_url的部分,如果omit_response_on_success设置为@(假),应用程序将与此消息崩溃: - [__ NSCFNumber长度]:无法识别选择的Facebook SDK 3.0的iOS:无法设置omit_response_on_success批量请求
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"
,这些将不会从该操作的输出。有任何想法吗?
答
这不应该是一个参数,但在该请求的JSON主体上的键 - 值,如在docs指出。我相信问题在于如何在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
是3.0版本的Facebook SDK还是iOS SDK? – ThomasW 2012-08-08 07:31:24
它是今天发布的facebook SDK 3.0。 – Tao 2012-08-08 07:35:35