我使用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;
}
有谁知道如何解决这个问题?所有功能似乎都有效,但我一直看到这个垃圾邮件是我的控制台。
答案 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版本发布后不久就已修复。此时不应再有来自此请求的失败。希望这有帮助!