6

Utilizzando l'SDK di Facebook, viene visualizzato il seguente errore della console quando si tenta di connettere un utente al mio sito. Il pulsante "Connetti a Facebook" funziona bene su tutti gli altri browser, ad eccezione di Firefox.Solo Firefox: FB.login() chiamato prima FB.init()

Ho un URL di canale nella configurazione innit, e ho confermato che questo problema si verifica nelle installazioni di Firefox senza Firebug. Quello che segue è il mio codice:

<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.init({ 
    appId : 'my_real_app_id', 
    channelUrl : 'MYURL.com/channel.php', 
    status: true, 
    cookie: true, 
    xfbml : false 
    }); 
}; 

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

$(document).ready(function() { 
    $('a#login-fb').click(function(event) { 
    event.preventDefault(); 
    FB.login(function(response) { 
     if (response.authResponse) { 
      console.log('Welcome! Fetching your information...'); 
      FB.api('/me', function(response) { 
       handleFacebookLogin(response); 
      }); 
     } else { 
      console.log('User cancelled login or did not fully authorize'); 
     } 
    }, {scope: 'email, offline_access, user_birthday, publish_stream, publish_actions' }); 
    }); 
</script> 
+0

ti è venuta con una correzione o una soluzione per il vostro problema? Se è così, sarebbe bello se si potesse spingerlo come risposta. –

risposta

4

Ho risolto questo problema cambiando il mio sopra javascript, proprio sotto # fb-root al seguente:

<div id="fb-root"></div> 
<script type="text/javascript"> 
$(document).ready(function() { 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId : 'my_id', 
     status: true, 
     cookie: true, 
     xfbml : false 
    }); 
    }; 

    (function() { 
    var e = document.createElement('script'); 
    e.async = true; 
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
    document.getElementById('fb-root').appendChild(e); 
    }()); 

    //rest of code here 
0

ho avuto il problema simile in un progetto Rails e mi ha aiutato a portare il

window.fbAsyncInit = function() { 
    FB.init({ 
     appId:my_real_app_id, 
     cookie:true, 
     status:true, 
     xfbml:true 
    }); 

fuori di testa e lo hanno nel tag <script> appena sotto la <div id="fb-root"></div> in corpo.