2012-09-26 32 views
17

Estoy ejecutando el 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, se puede ver a mis amigos, enviar solicitudes de aplicaciones, puesto que mi pared, etc. Sin embargo, cada vez que iniciar ningún tipo de FBURLConnection se hace, veo este impreso a mi consola:Facebook iOS SDK 3.1: "Error: código de estado HTTP: 400"

Error: HTTP status code: 400 

entré en el código FB e imprimí la reponse cuando se imprime este error y me sale:

{ 
    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.

+0

Ni siquiera puedo conectarme correctamente. Incluso he seguido la guía en: https://developers.facebook.com/docs/tutorial/iossdk/upgrading-from-3.0-to-3.1/ –

Respuesta

-2

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!

+7

Todavía estoy viendo esto en 3.1. Ocurre la primera vez que la aplicación solicita permisos (si eliminé la aplicación FB de la lista de aplicaciones autorizadas en mi configuración). Las solicitudes posteriores funcionan, sin embargo. Esto parece ocurrir solo en el dispositivo, no en el simulador. – Senior

3

Por lo que puedo decir, este es un error introducido en el 3.1 SDK. Al mirar el tráfico de la red con Charles, están tratando de POSTAR al graph.facebook.com/[user id]/activities pero está fallando.

+0

Estoy pensando que esto es una cosa nueva que trate el seguimiento de se instala para sus nuevos anuncios móviles. Esto requiere una identificación de "atribución" para identificar el dispositivo que coincide con la respuesta de "atribución" que veo. – stipe108

+0

Puede haber un error u otra cosa que no sepa. Pero llegué a la conclusión de que para el usuario en particular Facebook permite que Post se actualice solo por 15-20 veces, entonces dará el código: error 400 –

+0

Estoy teniendo esto con 3.1 SDK. Con Charles vi a este llamado a ser responsable: http://0-op-w.channel.facebook.com – Valerio

18

Justo después se crea la sesión de hacer esto:

[FBSession setActiveSession:session]; 
+1

¡excelente! funciona ... gracias amigo. –

+0

gracias hombre ... funciona perfecto y +1 para esto ... – DharaParekh

0

Esto es lo mismo que mi respuesta desde aquí: Facebook SDK 3.1 - Error: HTTP status code: 400

pero podría ayudar a las personas que sigue recibiendo 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 según 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 se cierra para cerrarse 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 volvería a aparecer allí no podía hacer otra cosa que darme permisos manualmente a través de una herramienta de depuración o esperar 24 horas para poder aceptar nuevamente la alerta de permiso de Facebook.

0

Descubrí que el Código de estado 400 también se lanza con FBErrorHTTPError cuando algo sale mal con Optional Properties en Definir campo de tipo 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 con lo que está enviando.

2

Después de mucha resolución de problemas y mirando todas las sugerencias en Stackoverflow, obtuve este error 400 (error.code = 5) cosa resuelta. La solución en mi caso era asegurarse de que los parametros (también conocido como postParams) incluidos en mi llamada startWithGraphPath habían exactamente los parametros soportados por el tipo de contenido que está siendo 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 retirar el @ "ref" clave, 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 activeSession (y todos los otros posibles culpables) check-out OK.

Cuestiones relacionadas