2011-09-09 12 views
5

Estoy tratando de que los usuarios puedan publicar en sus paredes de Facebook en mi sitio externo.FB.ui() dando error en Safari con solicitud asíncrona cuando el usuario no está ya conectado

He encontrado un problema en Safari. Si el usuario no ha iniciado sesión, es decir, no han pasado por el flujo que llama a FB.login(), aparece el siguiente error de JS al llamar a FB.ui():

TypeError: 'undefined' no está un objeto (evaluando 'b.fbCallID = a.id')

Sin embargo, si están conectados, el diálogo aparece bien.

Se llama a FB.ui() en una función de devolución de llamada: estoy recuperando una URL única de mi servidor, y luego llamando a FB.ui(). Si llamo directamente a FB.ui(), funciona bien, pero no cuando es asincrónico.

Aquí está el código:

 retrieveUrl(param1, param2, function(result) { 
      FB.ui({ method: 'feed', 
        description: 'My Description', 
        display: 'dialog', 
        link: result.uniqueUrl, 
        picture: 'http://foo.com/bar.jpg' 
      }, function(response) { 
       if (response && response.post_id) { 
        //Posted message 
       } else { 
        //Not posted message 
       } 
      }); 
     }); 

Esto funciona en otros navegadores, independientemente del estado conectado o no.

+0

Estoy viendo el mismo problema ... – DuckMaestro

Respuesta

4

Se deben invocar los métodos FB.login o FB.ui en una acción iniciada por el usuario (hacer clic) en Safari para que FB.UIServer muestre una nueva ventana/ventana emergente/iframe.

Si intenta llamar a estos métodos en un evento de devolución de llamada de red será bloqueado y la excepción que ha descrito ocurrirá:

TypeError: 'indefinido' no es un objeto (la evaluación 'b.fbCallID = a.id ')

¿Puede recuperar la URL única antes de que el usuario interactúe con la página y luego presentar el diálogo de alimentación cuando hacen clic en un botón?

+0

No, definitivamente no puedo. Necesito que mi servidor genere un código único primero. Acabo de hacer el redireccionamiento en lugar de usar FB.ui(), así que está bien. – pricklypear

+0

tal vez el código único se puede generar con la página? Meh. Redirigir lejos! – funrob

Cuestiones relacionadas