13

我正在尝试使用新的(测试版)facebook ios sdk 3.0 在应用程序中添加 facebook 集成。我只想在 facebook 上发布状态更新。我使用 FBLoginView 登录到 facebook。我按照 facebook 上的说明将我的应用程序 ID 放在 plist 中。我输入了一些代码发布到 facebook。

(void)viewDidLoad
{
[super viewDidLoad];
NSArray *perms;
perms = [NSArray arrayWithObjects:@"status_update", nil];
FBLoginView *loginview = 
[[FBLoginView alloc] initWithPermissions:perms];

loginview.frame = CGRectOffset(loginview.frame, 5, 5);
loginview.delegate = self;

[self.view addSubview:loginview];
// Do any additional setup after loading the view, typically from a nib.

}

- (IBAction)poststatus:(UIButton *)sender {
NSString *message = [NSString stringWithFormat:@"Test staus update"];

[FBRequestConnection startForPostStatusUpdate:message
                            completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

                                [self showAlert:message result:result error:error];

                            }];
}
- (void)showAlert:(NSString *)message
       result:(id)result
        error:(NSError *)error {

NSString *alertMsg;
NSString *alertTitle;
if (error) {
    alertMsg = error.localizedDescription;
    alertTitle = @"Error";
} else {
    NSDictionary *resultDict = (NSDictionary *)result;
    alertMsg = [NSString stringWithFormat:@"Successfully posted '%@'.\nPost ID: %@", 
                message, [resultDict valueForKey:@"id"]];
    alertTitle = @"Success";
}

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:alertTitle
                                                    message:alertMsg
                                                   delegate:nil
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
[alertView show];
}

奇怪的是,这段代码只运行一次。首次验证用户身份后,我可以成功发布 ONE 状态更新。之后,所有后续尝试都将失败,并出现 FBiOSSDK 错误 5(在控制台中,错误:HTTP 状态代码:400)。解决此问题的唯一方法是从 facebook 帐户中删除该应用程序并重新进行身份验证。我不确定问题是什么。我在网上寻找解决方案,但找不到任何东西。如果有人知道如何解决这个问题,请告诉我。谢谢

4

3 回答 3

10

com.facebook.sdk 错误 5 在使用 Facebook iOS sdk 时总是很烦人。大多数情况下,它附带控制台错误:HTTP 状态代码:400。它认为 Facebook iOS sdk 中有一个错误会随机产生此错误。我认为这个错误是由于某些原因而发生的,当它发生时,sdk 没有提供错误的实际原因。

几个可能的原因

  • sdk 中的每个请求都是通过完成块完成的,我们实际上将其作为参数传递给 completionHandler。当一个块正在进行中并发出另一个请求时,会发生此错误。一个简单的例子可能是如果您已经在某个按钮操作上编写了在 Facebook (startForPostStatusUpdate::) 上发帖的请求。在单击单个按钮时它会正常工作,但如果你双击按钮它会抛出这个错误 com.facebook.sdk 错误 5

  • 如果您在当前会话未打开时尝试发布。例如,一旦使用 Facebook 登录,然后终止应用程序,然后重新打开,然后尝试在 Facebook 上共享,结果 -> com.facebook.sdk 错误 5。在这种情况下,尝试使用重新打开会话

  • Facebook 不允许重复发布相同的状态,他们认为这可能是某种垃圾邮件,例如,如果您尝试更新状态并且您已经硬编码了一个字符串,可以说 @“这是一个测试状态更新”,您再次冒充然后再次。经过 5 到 10 次尝试后,他们将不再允许您这样做。导致 com.facebook.sdk 错误 5。如果是这种情况,您应该更改您的状态字符串并尝试更新。

  • Facebook 为特定用户定义了使用 sdk 发布状态的限制。例如,如果您尝试更新状态并且您已经完成了 15 到 20 次状态更新。他们不会让你做更多 Resulting -> com.facebook.sdk error 5. 在这种情况下,尝试从你的 Facebook 帐户取消对应用程序的授权并重新授权,或者尝试使用其他 Facebook 帐户

于 2012-11-07T07:02:58.433 回答
7

这个问题似乎没有答案。我检查了 SDK 附带的 FB 示例,在这些示例中也发生了相同的错误。因此,这意味着在几次状态更新 (15-20) 之后,Facebook 就达到了该特定用户的限制。如果您注销该用户并以其他用户身份登录,则可以成功发布。

如果我能找到任何扩展来限制设置,我会回复。Facebook 也不允许发布相同的帖子。

于 2012-09-27T06:41:17.940 回答
0

使用代理!

FB ios SDK 只是对 graph.facebook.com/....?access_token=..... 的 HTTP 请求的包装

因此,您可以轻松复制请求或使用 HTTP 代理来查看真实的服务器答案(这不是错误 5 !)。

于 2013-04-18T15:12:14.803 回答