17

我正在使用 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;
}

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

4

6 回答 6

18

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

[FBSession setActiveSession:session];
于 2012-11-09T15:04:51.677 回答
3

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

于 2012-09-26T19:59:45.537 回答
2

经过多次故障排除并查看了有关 Stackoverflow 的所有建议后,我得到了解决此错误 400 (error.code = 5) 的问题。就我而言,解决方案是确保我的 startWithGraphPath 调用中包含的参数(又名 postParams)具有发布内容类型所支持的参数。

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

删除@"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(和所有其他可能的罪魁祸首)签出 OK。

于 2013-01-16T23:55:42.327 回答
0

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

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

最初的问题在 3.1 SDK 发布后由 Facebook 解决。

但是有些仍然有问题,如果您遇到此问题,您应该检查登录流程,并查看 facebooks 示例,如果您仍然遇到问题,这可能是解决方案的提示。

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

FBSessionState 仅打开一秒钟,然后更改为关闭并出现 400 错误。

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

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

于 2012-11-16T11:16:14.040 回答
0

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

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

于 2012-11-16T13:29:08.277 回答
-2

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

于 2012-10-05T03:21:38.320 回答