2012-03-27 16 views
7

He estado experimentando con la API de Facebook con el Javascript SDK. Cada vez que estoy conectado a Facebook que pueda llamar bastante fiable:https://graph.facebook.com/me/albums a veces no devuelve nada

function init() { 
    // Called after loading the Facebook SDK 
    FB.api("/me", function(response) { 
     console.log(response.first_name); // "John" (always works) 
    }); 
} 

Pero también quiero conseguir un usuarios de álbumes de fotos (cuando hacen clic en un enlace) y por alguna razón esta llamada sólo funciona de forma intermitente:

$(document).ready(function) { 

    $("#get-albums-link").click(function() { 
     var accessToken = "456"; // Just an example 
     FB.api("/me/albums?access_token=" + accessToken, function(response) { 
      console.log(response); // An empty object about 40% of the time 
     }); 
    }); 

}); 

Cuando esto sucede puedo abrir una nueva pestaña y verificar que incluso las consultas directas devuelvan el mismo resultado vacío (tenga en cuenta que aunque esto podría ser un problema de autorizaciones, no hay una indicación obvia de que lo sea, es simplemente un vacío Objeto JSON):

<!-- An HTTPS GET at https://graph.facebook.com/me/albums?access_token=456 --> 
{ 
    "data": [ 

    ] 
} 
+0

¿Estás seguro de que access_token que estás usando tiene permiso para las fotos? –

+0

No he pasado tiempo con el almacenamiento en caché de la API de Facebook, pero he visto el mismo problema con las llamadas ajax() de jQuery. Llamar explícitamente las consultas con jsonp o establecer un indicador de nocache ayuda al navegador a continuar realizando llamadas. Es posible que desee comenzar con un control de caché de Facebook –

+0

@FelipeBrahm, debe ser un access_token correcto, porque después de todo, a veces obtengo un objeto Álbumes. Es solo que otras veces, yo no. Definitivamente podría ser un problema de almacenamiento en caché, dado que parece funcionar correctamente durante unos 15 minutos antes de devolver objetos vacíos. Si espero 20 minutos y actualizo, generalmente funciona de nuevo por otros 15 minutos. – Andrew

Respuesta

1

Como Felipe señaló anteriormente, el token de acceso puede ser el problema, ya que al no tener los permisos configurados se devolverá {"data": []}. Pruébelo usted mismo: https://developers.facebook.com/tools/explorer/?method=GET&path=me%2Falbums

Además, incluso si es un auth_token válido, el SDK no requiere uno, por lo que no lo use. Puede terminar con algo como graph.facebook.com/me/albums?access_token=123423 & access_token = 981234 (segundo token de acceso agregado por SDK). Personalmente, no sé cómo se construye la función FB.api, pero solo siga los documentos: https://developers.facebook.com/docs/reference/javascript/FB.api/

Deseo saber si todavía tiene problemas.

+0

gracias por la respuesta. No quiero maldecirme a mí mismo, pero el problema parece haber desaparecido. Desearía tener una buena explicación. Las cosas que son diferentes ahora son: (1) Han pasado algunas semanas desde que toqué el código. Tal vez las cosas solo necesitan "conformarse" con mi aplicación recién registrada en Facebook. (2) No uso las llamadas 'FB.api (...)' para recuperar álbumes, utilizo '$ .ajax (..)' de jQuery directamente. (3) En las llamadas '$ .ajax (...)' ya mencionadas, _do_ paso en el token de acceso. – Andrew

Cuestiones relacionadas