2013-06-18 31 views
9

Tôi đang chạy một lỗi rất giống với lỗi này: Facebook Login API HTTPS Issue.Vấn đề về nút like Facebook: giao thức không khớp từ http và https

Tôi có một trang web sử dụng xác thực facebook, đăng nhập Facebook là không có vấn đề. Nhưng nút Facebook giống gặp khó khăn khi được nhấp (kiểm tra lỗi trên Chrome, Safari, Firefox, trong OSX), thông báo lỗi là:

Blocked a frame with origin "https://www.facebook.com" from accessing a 
frame with origin "http://static.ak.facebook.com". The frame requesting 
access has a protocol of "https", the frame being accessed has a protocol 
of "http". Protocols must match. 

Tôi đã tìm kiếm hết và không tìm thấy giải pháp nào.

Có vẻ như khi nút tương tự được nhấp, nó sẽ mở ra một khung hình từ https://facebook.com gọi lại và cố gắng yêu cầu http://static.ak.facebook.com do đó gây ra giao thức không khớp?

Đây là những gì tôi đặt ngay sau khi <body> thẻ

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    // init the FB JS SDK 
    FB.init({ 
     appId  : 'appid',      // App ID from the app dashboard 
     channelUrl : '//mydomain/channel.html',  // Channel file for x-domain comms 
     status  : true,         // Check Facebook Login status 
     xfbml  : true         // Look for social plugins on the page 
    }); 

    // Additional initialization code such as adding Event Listeners goes here 
    }; 

    // Load the SDK asynchronously 
    (function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/zh_TW/all.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script> 

và file kênh tại http://mydomain/channel

<script src="//connect.facebook.net/zh_TW/all.js"></script> 

và dưới đây là cách tôi sử dụng nút như

<div class="fb-like" data-href=url data-send="true" data-width="450" 
data-show-faces="true"></div> 

Thật cần xin giúp đỡ!

+0

bạn đã cố gắng thêm giao thức vào tập lệnh src chưa? – Mangiucugna

+1

nếu bạn đang sử dụng // thay vì http hoặc https giả sử để kích hoạt yêu cầu với giao thức phù hợp với giao thức trình duyệt, hãy đảm bảo tất cả các mã url của bạn bắt đầu bằng // ví dụ: src = "// yoursite.com" – talsibony

+0

đã thử phiên bản iframe của nút tương tự? – Jacob

Trả lời

4

Trong thẻ script đầu tiên của bạn, bạn có thể nói một cách rõ ràng Facebook để sử dụng HTTPS ...

Thêm dòng:

FB._https = (window.location.protocol == "https:"); 

Thêm nó trước khi gọi hàm FB.init, chỉ dưới đây hoặc tại chỗ của nhận xét:

// init the FB JS SDK 

Điều này sẽ đảm bảo rằng máy chủ của Facebook tải mọi thư viện cần thiết để kết thúc qua https.

Hy vọng điều này sẽ hữu ích.

+1

Bạn phải là vị cứu tinh thánh. Vấn đề này vẫn còn tồn tại, nhưng nhờ bạn nó đã biến mất! – Zh4rsiest

+0

Hà - vui khi được giúp đỡ, buồn khi biết điều này vẫn là một vấn đề gần 2 năm sau đó. Vui vì tôi không làm nhiều FB dev nữa! – steve

0

Rà soát mã js trên Facebook có rất nhiều url chứa các chuỗi cứng mã hoá cho

http://static .../rsrc.php 

nó có thể đó là những file kích hoạt lỗi.

Đây có thể là điều mà Facebook cần cập nhật.

Trên một lưu ý phụ, có thể tải xuống tệp js đó từ Facebook và lưu trữ nó trên máy chủ của bạn và xóa chuỗi http được mã hoá cứng. Tôi sẽ thử nghiệm điều này hơn nữa nhưng tôi đang trên điện thoại của tôi vào lúc này.

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