2012-09-19 32 views
5

Estoy creando una aplicación que muestra Facebook friend. En primer lugar, el usuario debe hacer clic en el botón de inicio de sesión y luego aparecerá una pantalla emergente simple después de completar la identificación de usuario y la contraseña, que mostrará la lista de amigos.
Todo está bien y se ejecuta en Firefox, Chrome, IE pero no abrirá ventana emergente en Safari y iPhone.
alguien sugiera que agregue el nombre de dominio y el nombre del canal en channelUrl. Creé un channel.html y agregué una referencia, pero no me ayudó.
Busco mucho pero no encuentro útil.Facebook Login no abierto en Safari/iPhone

Aquí está mi código.
Custom.js

function getUser() 
{ 
FB.init({ 
    appId  : '289403314507596', // App ID 
    channelUrl : 'http://bc2-236-161.compute-1.amazonaws.com/html/channel.html', // Channel File 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    xfbml  : true // parse XFBML 
}); 

(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)); 

//check current user login status 
FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
     window.location="facebook_friend.html" 
     loadFriends(); 
    } else { 
     //user is not connected. 
     FB.login(function(response) { 
      if (response.authResponse) { 
       window.location="facebook_friend.html" 
       loadFriends(); 
      } else { 
       alert('User cancelled login or did not fully authorize.'); 
      } 
     }); 
    } 
}); 
} 
//start from here 
$(document).ready(function(){ 
$('.load-button').click(function(){ 
    getUser(); 
}); 
}); 

channel.html

<script src="//connect.facebook.net/en_US/all.js"></script>// i add this line in channel.html 

refer_friend.html
agrego referencia de custom.js en este archivo

<div id="fb-root"></div> 
    <script src="http://connect.facebook.net/en_US/all.js"></script> 
    <img src="includes/fb-btn1.png" class="load-button" style=" 
    width: 290px; 
    Height: 40px; 
    margin-top: 5px;"/> 

Respuesta

4

bien ... Después de desperdiciar mi total día recibí una respuesta. Usando Javascript_Facebook Sdk, al hacer clic en el botón de inicio de sesión, se abrirá una ventana emergente. Y en Safari o iPhone (el mío), habilito la opción Bloquear-emergente.
Por lo tanto, no puedo ver la ventana de inicio de sesión de Facebook. necesita permitir la ventana emergente.
Usted puede permitir emergente haciendo clic en

Safari-disable Block pop-up windows 

o

safari-preference-then disable checkbox of pop-up window's  

o puede utilizar un atajo de teclado:

shift-[command key]-K. 

aplausos.

+4

El problema principal con su código es que usted llama 'FB.login'automatically - entonces la ventana emergente es muy probable que bloquee por el navegador actual. La recomendación general es llamar solo a este método sobre la interacción explícita del usuario, p. haciendo clic en un enlace/botón para activar el inicio de sesión. – CBroe

+0

gracias por esta información. Voy a intentar esto. –

+0

Safari parece ser muy sensible. Lo mismo sucede si llama a FB.getLoginStatus en el código anterior dentro de un manejador de clics. Actualmente experimenta esto en Safari Version 6.0.5 (7536.30.1). Creo que es porque se llama a FB.login dentro de una función, incluso si fue activado/invocado por un evento de clic de usuario ... – Hans

Cuestiones relacionadas