0

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

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",则此操作将没有输出。有任何想法吗?

4

3 回答 3

1

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

于 2012-09-27T01:04:11.287 回答
0

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

于 2012-09-24T13:45:54.730 回答
0

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
于 2013-08-22T16:38:42.403 回答