我正在运行与此错误非常类似的错误:Facebook Login API HTTPS Issue。
我有一个网站使用facebook认证,Facebook登录没问题。但点击时,Facebook喜欢按钮会遇到麻烦(Chrome,Safari,Firefox,OSX测试失败),错误信息是: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.
我已经搜遍了所有搜索结果。
当点击“赞”按钮时,它似乎从https://facebook.com回调中弹出一帧,并尝试请求http://static.ak.facebook.com从而导致协议不匹配?!
以下是我在<body>
代码
<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>
和http://mydomain/channel
<script src="//connect.facebook.net/zh_TW/all.js"></script>
这就是我如何使用like-button
<div class="fb-like" data-href=url data-send="true" data-width="450"
data-show-faces="true"></div>
请真的需要帮助!
答案 0 :(得分:4)
在您的第一个脚本标记中,您可以明确告诉Facebook使用HTTPS ...
添加以下行:
FB._https = (window.location.protocol == "https:");
在FB.init函数调用之前添加它,就在注释的下方或代替注释:
// init the FB JS SDK
这将确保Facebook的服务器通过https加载任何所需的库。
希望这有帮助。
答案 1 :(得分:0)
在Facebook上查看js代码时,有多个网址包含
的硬编码字符串http://static .../rsrc.php
这些可能是触发错误的文件。
这可能是Facebook需要更新的内容。
另外,可以从Facebook下载该js文件并将其存储在您的服务器上并删除硬编码的http字符串。我会进一步测试,但此刻我正在打电话。