Ответ 1
Эта ошибка отразила ошибку на сервере, которая была исправлена вскоре после публикации версии 3.1. На этом этапе от этого запроса больше не будет сбоев. Надеюсь, это поможет!
Я запускаю Facebook SDK 3.1 на Xcode 4.5GM с симулятором iOS6. Я подключаюсь к FB в настройках iOS и успешно подключаюсь к FB в своем приложении, используя новый интерфейс iOS6 FBConnect. У меня есть токен доступа, вы можете видеть моих друзей, отправлять приложения, отправлять сообщения на мою стену и т.д. Однако каждый раз, когда я запускаю какой-либо 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;
}
Кто-нибудь знает, как это решить? Все функции, похоже, работают, но я продолжаю видеть этот спам в моей консоли.
Эта ошибка отразила ошибку на сервере, которая была исправлена вскоре после публикации версии 3.1. На этом этапе от этого запроса больше не будет сбоев. Надеюсь, это поможет!
Сразу после создания сеанса сделайте следующее:
[FBSession setActiveSession:session];
Насколько я могу судить, это ошибка, введенная в SDK 3.1. Глядя на сетевой трафик с Чарльзом, theyre пытается POST до graph.facebook.com/[user id]/activities
, но его провал.
После многого устранения неполадок и рассмотрения всех предложений по Stackoverflow, я получил эту ошибку 400 (error.code = 5). Решение в моем случае состояло в том, чтобы убедиться, что параметры (aka postParams), включенные в мой вызов startWithGraphPath, имели точно параметры, поддерживаемые типом контента, который был отправлен.
В частности, я отправлял ссылку для меня/фида с помощью клавиши @ref (обычно используется для отслеживания с помощью 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)
Моя активная сессия (и все другие возможные виновники) проверена ОК.
Это то же самое, что и мой ответ отсюда: Facebook SDK 3.1 - Ошибка: код состояния HTTP: 400
Но это может помочь людям по-прежнему получать ошибку 400.
Оригинальная проблема была решена Facebook сразу после выхода 3.1 SDK.
Но у некоторых по-прежнему возникают проблемы, если у вас есть эта проблема, вы должны проверить поток входа в систему и посмотреть примеры facebooks, если у вас все еще есть проблемы, это может быть намеком на решение.
У меня возникла ошибка 400, когда у меня нет разрешения на доступ к моей информации. Странно, что я получаю accessToken и даже действительный логин (это потому, что я структурировал свой код с помощью справки в соответствии с примером Scrumptious, и я сделал действительный логин, когда состояние сеанса открыто).
FBSessionState открывается только как секунда, а затем он закрывается с ошибкой 400.
С именем входа iOS6 вы получите уведомление о разрешении, когда вы его попросите, а затем телефон запомнит этот выбор в течение 24 часов. Но если пользователь заходит на домашнюю страницу facebook, а затем удаляет разрешения для приложения, телефон будет помнить эту настройку в течение 24 часов, независимо от того, переустанавливаете приложение или нет.
Это я узнал после нескольких часов отладки, так как я разрешил приложение из настроек в iOS, но я не мог опубликовать его, и поскольку я удалил разрешение из конфиденциальности в facebook, и предупреждение не появится снова, было ничего, что я мог бы сделать, кроме как вручную предоставить мне разрешения через инструмент отладки или подождать 24 часа, чтобы я мог снова принять оповещение о регистрации на facebook.
Я обнаружил, что код состояния 400 также задан с помощью FBErrorHTTPError
, когда что-то пойдет не так с Optional Properties
в поле "Определить тип действия" в панели определения Facebook = > Open Graph.
В моем случае я отправлял объект действия без свойства, помеченного как isRequired
. Будьте также осведомлены о опции isArray
и, в общем, для правильного сопоставления с тем, что вы отправляете.