fbsdkcorekit - Facebook iOS SDK 3.1: "Error: código de estado HTTP: 400"
install facebook sdk ios (6)
Estoy ejecutando Facebook SDK 3.1 en Xcode 4.5GM con el simulador iOS6. Me conecto a FB en la configuración de iOS y conecto FB con éxito en mi aplicación utilizando la nueva interfaz de usuario de iOS6 FBConnect. Tengo un token de acceso, puedo ver a mis amigos, enviar solicitudes de aplicaciones, publicar en mi muro, etc. Sin embargo, cada vez que inicio cualquier tipo de FBURLConnection está hecho, veo esto impreso en mi consola:
Error: HTTP status code: 400
Ingresé al código FB e imprimí la respuesta cuando se imprimió este error y recibí:
{
body = {
error = {
code = 100;
message = "(#100) The parameter ''attribution'' is required for the ''mobile_app_install'' activity";
type = OAuthException;
};
};
code = 400;
}
¿Alguien sabe cómo resolver esto? Toda la funcionalidad parece funcionar, pero sigo viendo este spam en mi consola.
Descubrí que el Código de estado 400 también se lanza con FBErrorHTTPError
cuando algo sale mal con Optional Properties
en Definir tipo de campo de campo de acción, dentro del panel de definición de Facebook => Abrir gráfico.
En mi caso, estaba publicando un objeto de acción sin una propiedad marcada como isRequired
. Tenga en cuenta también la opción isArray
y, en general, para que coincida correctamente con lo que está enviando.
Después de mucha resolución de problemas y mirando todas las sugerencias sobre , obtuve este error 400 (error.code = 5) cosa resuelta. La solución en mi caso era asegurarme de que los parámetros (también conocidos como postParams) incluidos en mi llamada startWithGraphPath tuvieran exactamente los parámetros compatibles con el tipo de contenido publicado.
Más específicamente, estaba publicando un enlace para mí / feed con la tecla @ "ref" (generalmente utilizada para el seguimiento con FB Insights).
Después de eliminar la tecla @ "ref", startWithGraphPath tuvo éxito.
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)
Mi session activa (y todos los demás posibles culpables) check-out OK.
Este error refleja un error en el servidor, que se solucionó poco después de que se publicó la versión 3.1. En este punto, no debería haber más fallas provenientes de esta solicitud. ¡Espero que esto ayude!
Esto es lo mismo que mi respuesta desde aquí: Facebook SDK 3.1 - Error: código de estado HTTP: 400
Pero podría ayudar a las personas a obtener el error 400.
El problema original fue resuelto por Facebook justo después de que se lanzó el 3.1 SDK.
Pero algunos todavía tienen problemas, si tiene este problema, debe verificar el flujo de inicio de sesión y ver ejemplos de facebook; si todavía tiene problemas, esto podría ser una pista para una solución.
Recibí el error 400 cuando no tengo autorización para acceder a mi información. Lo extraño es que obtengo un accessToken e incluso un inicio de sesión válido (esto es porque he estructurado mi código, con la ayuda de acuerdo con el ejemplo de Scrumptious e hice un inicio de sesión válido cuando el estado de sesión está abierto).
FBSessionState solo se abre por un segundo y luego cambia a cerrado con 400 Error.
Con el inicio de sesión nativo iOS6, obtiene la alerta de permiso cuando la solicita, y luego el teléfono recuerda esa opción durante 24 horas. Pero si el usuario inicia sesión en la página de inicio de Facebook y luego elimina el permiso para la aplicación, el teléfono recordará esa configuración durante 24 horas, independientemente de si reinstala la aplicación o no.
Esto me enteré después de algunas horas de depuración, ya que permití la aplicación desde la Configuración en iOS, pero no pude publicar, y como eliminé el permiso de la privacidad de Facebook, y la alerta no se mostró nuevamente, no había nada que pudiera hacer, pero para darme permisos manualmente a través de una herramienta de depuración o esperar 24 horas para que pueda volver a aceptar la alerta de permiso de Facebook.
Justo después de que se crea la sesión, haz esto:
[FBSession setActiveSession:session];
Lo mejor que puedo decir es que este es un error introducido en el 3.1 SDK. Al ver el tráfico de la red con Charles, están tratando de graph.facebook.com/[user id]/activities
a graph.facebook.com/[user id]/activities
de graph.facebook.com/[user id]/activities
pero está fallando.