iOS:Facebook错误"缺少消息或附件"

时间:2012-12-18 09:02:22

标签: facebook ios5.1

升级我的应用。目标是iOS5.1。 Xcode 4.5.2并使用FacebookSDK 3.0和Twitter Frameworks。 应用程序正在登录Facebook而没有问题。当我尝试发布帖子时,我会在日志中返回:

2012-12-18 10:39:31.934 MyApp[31754:1d603] Error Domain=com.facebook.sdk Code=5 
"The operation couldn’t be completed. (com.facebook.sdk error 5.)" 
UserInfo=0xab74630 {com.facebook.sdk:ParsedJSONResponseKey={
    body =     {
        error =         {
            code = 100;
            message = "(#100) Missing message or attachment";
            type = OAuthException;
        };
    };
code = 400;
}, com.facebook.sdk:HTTPStatusCode=400}
2012-12-18 10:39:31.935 MyApp[31754:1d603] (null)

最后一行是日志表达式的结果,用于列出下面列出的“publishStory”方法中的“postParams”。请注意,它是(null)。 模拟器中的错误结果是“error:domain = com.facebook.sdk,code = 5”

我使用Facebook教程构建FB界面。我已经在initWithNibName中列出了参数,就像教程所示。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // this stuff will change... just get it working

        self.postParams = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
                           @"Share...", @"message",
                           @"http://MyApp.com", @"link",
                           @"icon.png", @"picture",
                           @"MyApp", @"name",
                           @"A wonderful way to record your life events.", "caption",
                           @"Easy to use.", @"description",
                           nil];
    }
    return self;
}

然后,“发布”是一个单独的方法,它停止的地方,我得到上述错误。

- (void)publishStory
{
    [FBRequestConnection
    startWithGraphPath:@"me/feed"
    parameters:_postParams
    HTTPMethod:@"POST"
    completionHandler:^(FBRequestConnection *connection,
                     id result,
                     NSError *error) {
        NSString *alertText;
        if (error) {
            NSLog(@"%@",error);
            NSLog(@"%@", _postParams);
            alertText = [NSString stringWithFormat:
                      @"error: domain = %@, code = %d",
                      error.domain, error.code];
        } else {
            alertText = [NSString stringWithFormat:
                      @"Posted action, id: %@",
                      [result objectForKey:@"id"]];
        }
        // Show the result in an alert
        [[[UIAlertView alloc] initWithTitle:@"Result"
                                 message:alertText
                                delegate:self
                       cancelButtonTitle:@"OK!"
                       otherButtonTitles:nil]
        show];
    }];
}

我认为,实际的参数不会上传。我一直在寻找寻找解决方案的几天。 任何人都知道如何解决这个问题并完成帖子?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我有一个类似的问题,但我的问题是 postParams 没有保留,因为我没有使用属性,我在同一个发布方法中创建postParams。这些参数需要保留在课堂的某个地方。

确保您的属性正在使用retain,同时确保调用init方法。