【问题标题】:ios-Facebook SDK 3.0 Error 5 When Posting Status Updateios-Facebook SDK 3.0 发布状态更新时出现错误 5
【发布时间】:2012-08-04 18:13: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 帐户中删除该应用程序并重新进行身份验证。我不确定问题是什么。我在网上寻找解决方案,但找不到任何东西。如果有人知道如何解决这个问题,请告诉我。谢谢

【问题讨论】:

  • 得到了相同的代码。使用更改了 app_id 的美味 Facebook 示例项目。也许它是相关的......
  • 我认为问题是由于某种原因您无法在特定时间段内发布一次相同的状态更新。如果您尝试发布相同的状态更新,请尝试在每个帖子中更改它
  • 发现问题。在返回的 NSError 的 userInfo 中有响应消息“已达到 Feed 操作请求限制”。进一步挖掘......

标签: ios facebook facebook-ios-sdk


【解决方案1】:

使用代理!

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

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

【讨论】:

    【解决方案2】:

    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 次状态更新。他们不会让你做更多结果 -> com.facebook.sdk 错误 5。在这种情况下,尝试从你的 Facebook 帐户取消对应用程序的授权并重新授权,或者尝试使用其他 Facebook 帐户

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 这是真的……但我们不能争辩……:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多