发布状态更新时,ios-Facebook SDK 3.0错误5

我正在尝试使用新的(testing版)Facebook ios sdk 3.0在应用程序中添加Facebook集成。 我只想发布状态更新到Facebook。 我用FBLoginViewlogin到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]; } 

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

似乎这个问题可能没有答案。 我已经检查过SDK的FB样本,在这些例子中也发生了同样的错误。 所以这意味着经过几次状态更新(15-20)Facebook达到了特定用户的限制。 如果您注销该用户并以其他用户身份login,则可以成功发帖。

如果我会find任何扩展来限制设置,我会回复。 另外脸书不允许相同的职位。

com.facebook.sdk错误5在使用Facebook iOS sdk时总是令人恼火。 大多数情况下,在控制台中添加addional错误:HTTP状态码:400。 它认为Facebook iOS sdk中存在一个随机产生这个错误的错误。 我认为这个错误是由于某些原因而发生的,而sdk在发生错误时并没有提供实际的错误原因。

几个可能的原因

  • sdk中的每个请求都是通过completionHandler中实际传递的完成块完成的。 当一个块正在进行并发出另一个请求时,会发生此错误。 一个简单的例子可能是如果你已经写了请求在Facebook上发布(startForPostStatusUpdate :)在一些button的动作。 在单击button,它会正常工作,但如果你双击button,它会抛出这个错误com.facebook.sdk错误5

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

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

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

使用代理!

FB ios SDK只是一个包装到一个HTTP请求graph.facebook.com / ….?access_token = …..

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