Facebook iOS SDK 3.1:“错误:HTTP状态代码:400”

时间:2012-09-26 05:16:50

标签: ios facebook facebook-graph-api facebook-ios-sdk

我使用iOS6模拟器在Xcode 4.5GM上运行Facebook SDK 3.1。我在iOS设置中连接到FB,并使用新的iOS6 FBConnect UI在我的应用程序中成功连接FB。我有一个访问令牌,可以看到我的朋友,发送应用程序请求,发布到我的墙上等等。但是,每次我启动任何类型的FBURLConnection时,我都会看到这打印到我的控制台:

Error: HTTP status code: 400

当我打印出错误时,我进入了FB代码并打印了响应,我得到了:

{
    body =     {
        error =         {
            code = 100;
            message = "(#100) The parameter 'attribution' is required for the 'mobile_app_install' activity";
            type = OAuthException;
        };
    };
    code = 400;
}

有谁知道如何解决这个问题?所有功能似乎都有效,但我一直看到这个垃圾邮件是我的控制台。

6 个答案:

答案 0 :(得分:18)

创建会话后立即执行以下操作:

[FBSession setActiveSession:session];

答案 1 :(得分:3)

据我所知,这是3.1 SDK中引入的错误。查看与Charles的网络流量,他们正试图POST到graph.facebook.com/[user id]/activities,但它失败了。

答案 2 :(得分:2)

经过多次故障排除并查看Stackoverflow上的所有建议后,我得到了这个错误400(error.code = 5)的事情已经解决了。 我的解决方案是确保我的startWithGraphPath调用中包含的params(aka postParams)具有完全所发布内容类型支持的参数。

更具体地说,我使用@“ref”键向我/ feed发送链接(通常用于跟踪FB Insights)。

删除@“ref”键后,startWithGraphPath成功。

NSMutableDictionary *postParams = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   @"Test NAME field (from ios app)", @"name",
                                   @"Test caption", @"caption",
                                   @"Test description", @"description",
                                   @"http://example.com/test1.html", @"link",
                                   @"http://example.com/water.jpg", @"picture",
                                   // @"foo", @"ref",  // WRONG!
                                   nil];

[FBRequestConnection startWithGraphPath:@"me/feed"
                             parameters:postParams
                             HTTPMethod:@"POST"
                      completionHandler:^(FBRequestConnection *connection,
                                          id result,
                                          NSError *error)

我的activeSession(和所有其他可能的罪魁祸首)签出确定。

答案 3 :(得分:0)

这与我在这里的答案相同:Facebook SDK 3.1 - Error: HTTP status code: 400

但它可以帮助人们仍然得到400错误。

3.1 SDK发布后,Facebook正在解决原始问题。

但是有些问题仍有问题,如果你有这个问题,你应该检查登录流程,看看facebook的例子,如果你还有问题,这可能是一个解决方案的暗示。

当我无权获取我的信息时,我收到400错误。奇怪的是我得到了一个accessToken甚至是一个有效的登录(这是因为我构建了我的代码,根据Scrumptious示例的帮助,当会话状态打开时我做了有效的登录)。

FBSessionState仅在一秒钟内打开,然后以400错误更改为关闭。

使用iOS6本机登录时,您会在收到请求时收到权限提醒,然后手机会记住该选项24小时。但是,如果用户登录到facebook主页,然后删除该应用程序的权限,则无论您是否重新安装该应用程序,手机都会记住该设置24小时。

这是我经过几个小时的调试后发现的,因为我从iOS中的设置中允许了应用程序,但我无法发布,因为我从facebook隐私中删除了许可,并且警报不再显示我无能为力,只能通过调试工具手动给我权限或等待24小时,这样我就可以再次接受facebook-permission警报。

答案 4 :(得分:0)

我发现,当Facebook =>打开图表定义面板中的“定义操作类型”字段集中的FBErrorHTTPError出现问题时,状态代码400也会被Optional Properties抛出。

在我的情况下,我发布了一个没有标记为isRequired的属性的操作对象。同时注意isArray选项,以及与您发送内容的正确匹配。

答案 5 :(得分:-2)

此错误反映了服务器上的错误,该错误在3.1版本发布后不久就已修复。此时不应再有来自此请求的失败。希望这有帮助!