6

Przy użyciu pakietu Facebook SDK pojawia się następujący błąd konsoli podczas próby połączenia użytkownika z moją witryną. Przycisk "Połącz z Facebookiem" działa dobrze we wszystkich innych przeglądarkach, z wyjątkiem Firefoksa.Tylko w Firefoksie: FB.login() wywołana przed FB.init()

Mam adres URL kanału w konfiguracji innit i potwierdziłem, że ten problem występuje w instalacjach Firefoksa bez Firebug. Poniżej mój kod:

<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

Czy wymyślić poprawka lub obejście problemu? Jeśli tak, to byłoby miło, gdybyś mógł wcisnąć to jako odpowiedź. –

Odpowiedz

4

naprawiłem ten problem poprzez zmianę mojego powyższy skrypt, tuż poniżej # fb-root do następujących:

<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

miałem podobny problem w projekcie Rails i pomógł wnieść

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

z nagłówka i miały je w tagu <script> tuż poniżej <div id="fb-root"></div> w ciało.

Powiązane problemy