5

Lo siguiente vincula el evento de inicio de sesión a un div. Si hago clic en él, obtengo la ventana emergente de inicio de sesión js sdk esperada. Sin embargo, después de enviar la ventana emergente con mis credenciales, la ventana emergente se vuelve blanca y no se cierra. Si actualizo la página, estoy conectado, pero no se actualiza automáticamente como es de esperar. ¿Alguien tiene alguna idea?Facebook JS SDK: la ventana emergente de inicio de sesión no se cierra


Editar: El mismo código (con ID de aplicación diff y credenciales de dominio) funciona en un servidor diferente. Esto me lleva a pensar que mi problema podría no estar relacionado con el código siguiente. ¿Hay alguna aplicación o configuración del servidor que pueda causar que la ventana emergente de inicio de sesión no se cierre/actualice?


<!DOCTYPE html> 
<html class="no-js ie ie10plus" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> 
    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object#"> 
     <script src="http://ajax.aspnetcdn.com/ajax/modernizr/modernizr-2.0.6-development-only.js"></script> 
    </head> 
    <body> 
     <div id="fb-root"></div> 
     <div id="fbLogin">Test login link</div> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" ></script> 
     <script>    
       var fbmm = {}; 

       window.fbAsyncInit = function() { 
       FB.init({ 
        appId  : '339910146083688', // App ID 
        cookie: true, 
        xfbml: true, 
        status: true, 
        oauth: true 
       }); 

       $(document).ready(function(){ 
        $("#fbLogin").click(function(){ 
         console.log('test'); 
         FB.login(function(response) { 
          if (response.authResponse) { 
          console.log('Welcome! Fetching your information.... '); 
          FB.api('/me', function(response) { 
           console.log('Good to see you, ' + response.name + '.'); 
          }); 
          } else { 
          console.log('User cancelled login or did not fully authorize.'); 
          } 
         }); 
        }); 
       }); 

       }; 

      (function(d){ 
      var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
      if (d.getElementById(id)) {return;} 
      js = d.createElement('script'); js.id = id; js.async = true; 
      js.src = "//connect.facebook.net/en_US/all.js"; 
      ref.parentNode.insertBefore(js, ref); 
      }(document)); 
     </script> 
    </body> 
</html> 
+0

Su código está muy bien, trabajando como se espera. – Philip

+0

Gracias Philip. Sin embargo, mi ventana de diálogo no se cierra en el dominio del puerto 8000, cuando no estoy autenticado e inicio de sesión. No estoy seguro, pero es posible que deba desconectarse de Facebook y hacer clic para ver el error. – Matrym

+0

Cerré la sesión y la ventana se cierra después de iniciar sesión. Lo ejecuto en el puerto 80 con mi app_id. En la configuración de la url de su aplicación, ¿ha agregado la url con el puerto? – Philip

Respuesta

5

hay algunos problemas conocidos cuando se prueba en los puertos que no sean 80 ó 443. Intente la instalación de la máquina de prueba en uno de ellos (“normal”) HTTP (S) puertos, y ver si el problema aún persiste

+0

Gracias CBroe, voy a intentarlo. – Matrym

+0

Ese fue de hecho el problema. Muchas gracias :) – Matrym

0

Mi conjetura es que el problema se produce ya que no proporciona una URL del canal, tal como se menciona en el documentation (under the Channel Url section):

El archivo de canal aborda algunos problemas con la comunicación a través de dominios en algunos navegadores.
...
El parámetro channelUrl es opcional, pero se recomienda .

Aunque su problema no aparece en los tres problemas resueltos en el archivo de canal, experimenté el mismo problema que una vez y lo resolví agregando el canal, aunque fue hace un tiempo, así que no soy 100 % es lo mismo.
se explica allí cómo crear el archivo de canal, y tiene que cambiar su javascript sólo un poco:

FB.init({ 
    appId: '339910146083688', // App ID 
    cookie: true, 
    xfbml: true, 
    status: true, 
    oauth: true, 
    channelUrl: YOUR_CHANNEL_URL 
}); 
+0

Gracias Nitzan, esa fue una de mis conjeturas también. Traté de poner un archivo de canal y no funcionó. – Matrym

+0

Solo asegúrese de que el canal se sirve desde el mismo dominio exacto, incluidos los puertos, también resulta que hay 2 informes de errores que pueden ser relevantes. [El botón de inicio de sesión de Fb no se activa, y continúa colgando después de iniciar sesión con éxito] (http://developers.facebook.com/bugs/421137377931628) también usa un puerto diferente, así que tal vez lo que @CBroe escribió es el caso, el 2º: [Fb .login en el explorador 7 muestra ventanas emergentes en blanco y no se cierra] (http://developers.facebook.com/bugs/255683901207692) es para IE7, así que no estoy seguro. –

0

en su lugar puede tratar de personalizar el registro en aplicación con las opciones de personalización de diálogo de autenticación en el Ajustes de Aplicacion. Allí puede configurar los permisos que desea y Facebook redirigirá automáticamente a la página de autenticación de la aplicación si el usuario no ha iniciado sesión/no ha autorizado su aplicación. Primero debe habilitarlo desde la configuración de la aplicación> Auth Diálogo. Ver la anotación Click aquí en la imagen a continuación. Espero que esto ayude. enter image description here

0

Tuve el mismo problema cuando la dirección del sitio web de desarrollo era http://localhost Definí un host en el archivo de hosts de Windows y funcionó bien.

0

recibí una llamada similar a FB.login() para cerrar el cuadro de diálogo cambiando

onclick="loginviafb()"; 

a

onclick="loginviafb(); return false;" 
Cuestiones relacionadas