[英]Facebook SDK 3.0 for iOS: Can't set omit_response_on_success for batch requests
似乎对于批处理请求,所有参数都作为relative_url的一部分转义,如果omit_response_on_success设置为@(false),则应用程序将崩溃,并显示以下消息:-[__ 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?omit_response_on_success=0"
,则此操作将不会输出这些内容。 有任何想法吗?
是的,SDK当前不支持此选项,请确保为此在https://developers.facebook.com/bugs上提交功能请求。
如docs所述,这不应是参数,而应是请求的JSON正文中的键值。 我认为问题在于,如何在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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.