6

Sử dụng Facebook SDK, tôi gặp lỗi giao diện điều khiển sau khi cố gắng kết nối người dùng với trang web của mình. Nút "Kết nối với Facebook" hoạt động tốt trong tất cả các trình duyệt khác, ngoại trừ Firefox.Firefox Chỉ: FB.login() được gọi trước FB.init()

Tôi có URL kênh trong cấu hình vô tuyến và tôi đã xác nhận sự cố này xảy ra trong cài đặt Firefox mà không có Firebug. Sau đây là mã của tôi:

<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

Bạn có đưa ra một sửa chữa hoặc một workaround cho vấn đề của bạn? Nếu vậy, nó sẽ được tốt đẹp nếu bạn có thể đẩy nó như là một câu trả lời. –

Trả lời

4

Tôi cố định vấn đề này bằng cách thay đổi javascript ở trên của tôi, ngay bên dưới # fb-root như sau:

<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

tôi đã có vấn đề tương tự trong một dự án Rails và nó đã góp phần mang lại sự

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

ra khỏi header và có nó trong thẻ <script> ngay dưới <div id="fb-root"></div> trong thân hình.

Các vấn đề liên quan