ios-Facebook SDK 3.0 Error 5 When Posting Status Update
我正在尝试使用新的(测试版)facebook ios sdk 3.0 在应用程序中添加 facebook 集成。我只想向 facebook 发布状态更新。我使用 FBLoginView 登录 facebook。我按照 facebook 上的指示将我的应用程序 ID 放在 plist 中。我输入了一些代码发布到 facebook.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | (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 '%@'.\ Post 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 帐户中删除该应用程序并重新进行身份验证。我不确定问题是什么。我在网上寻找解决方案,但找不到任何东西。如果有人知道如何解决这个问题,请告诉我。谢谢
com.facebook.sdk 错误 5 在使用 Facebook iOS sdk 时总是令人恼火。大多数情况下,它在控制台中带有附加错误:HTTP 状态代码:400。人们认为 Facebook iOS sdk 中有一个错误会随机产生此错误。我认为此错误是由于某些原因而发生的,而 sdk 在发生此错误时并未提供实际的错误原因。
几个可能的原因
-
sdk 中的每个请求都是使用完成块完成的,我们实际上将这些完成块作为参数传递到 completionHandler 中。当一个块正在进行并发出另一个请求时,会发生此错误。一个简单的例子可能是如果你写了在 Facebook (startForPostStatusUpdate::) 上发布一些按钮操作的请求。在单按钮点击它会工作正常但如果你双击按钮它会抛出这个错误 com.facebook.sdk error 5
-
如果您在当前会话未打开时尝试发布。例如一旦使用 Facebook 登录,然后终止应用程序,然后重新打开,然后尝试在 Facebook 上共享,结果 -> com.facebook.sdk 错误 5。在这种情况下,尝试使用
重新打开会话
-
Facebook 不允许重复发布相同的状态,他们认为这可能是某种垃圾邮件,例如如果您正在尝试更新状态并且您已经硬编码了一个字符串,那么可以说@a€?这是一个测试状态更新a€?你一次又一次地摆姿势。经过 5 到 10 次尝试后,他们将不再允许您这样做。导致 com.facebook.sdk 错误 5. 如果是这种情况,您应该更改状态字符串并尝试更新。
-
Facebook 已为特定用户定义了使用 sdk 发布状态的限制。例如,如果您尝试更新状态并且已经完成,可以说 15 到 20 个状态更新。他们不会让你做更多 Resulting -> com.facebook.sdk error 5. 在这种情况下,尝试从你的 Facebook 帐户取消对应用程序的授权并重新授权或尝试使用其他 Facebook 帐户
这个问题似乎没有答案。我检查了 SDK 附带的 FB 示例,在这些示例中也发生了相同的错误。所以这意味着在几次状态更新 (15-20) 之后,Facebook 达到了该特定用户的限制。如果您为该用户注销并以其他用户身份登录,则可以成功发布。
如果我能找到任何限制设置的扩展,我会回复。
此外,Facebook 不允许使用相同的帖子。
使用代理!
FB ios SDK 只是对 graph.facebook.com/....?access_token=.....
的 HTTP 请求的package
因此您可以轻松地复制请求或使用 HTTP 代理来查看真实的服务器响应(这不是错误 5 !)。