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

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 !)。