Я запустил приложение на прошлой неделе и с тех пор заметил, что в Chrome не всегда регулируется только высота моего холста.Я потратил кучу часов на изучение проблем и заметил, что получаю следующую ошибку - иногда.
Unsafe JavaScript attempt to access frame with URL https://apps.facebook.com/tabletr/ from frame with URL
http://static.ak.facebook.com/connect/canvas_proxy.php?version=3#behavior=p&method=getPageInfo¶ms=%7B%22channelUrl%22%3A%22https%3A%2F%2Fs-static.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%23cb%3Df3782154e%26origin%3Dhttps%253A%252F%252Ftabletr.herokuapp.com%252Ff2951037b%26relation%3Dtop.frames%255Biframe_canvas_fb_https%255D%26transport%3Dpostmessage%22%2C%22frame%22%3A%22iframe_canvas_fb_https%22%7D&relation=top. Домены, протоколы и порты должны совпадать.
Теперь, зная кое-что о программировании, я понял, что это, вероятно, связано с взаимозаменяемостью https
и http
.Я получаю сообщение об ошибке (иногда) с безопасным просмотром «вкл.» На Facebook и никогда не с «выключенным».
Но то, что я нахожу действительно странным, это то, что проблема возникает спорадически при просмотре по HTTPS.Я до сих пор не нашел ни одного паттерна для возникающей проблемы, или мой код работает как задумано.Я знаю, что здесь есть несколько постов на эту тему, и я попробовал несколько обходных путей, но ни один, похоже, не решил мою проблему.Вот часть моего кода -
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '<myid>', // App ID
channelUrl : '//tabletr.herokuapp.com/channel.php', // Channel File
status : false, // Check login status
cookie : true, // Enable cookies to allow the server to access the session
xfbml : false // Parse XFBML
});
// Additional initialization code here
FB.Canvas.setSize({ height: 1200 });
};
// If I comment out this function I don't get any unsafe URL errors
// anymore. I'm guessing that the include of the JavaScript code either
// fails to use the right protocol or is faulty in its implementation
// by Facebook. My money is on the former.
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
//js.src = "//connect.facebook.net/en_US/all.js";
js.src = "//tabletr.herokuapp.com/js/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
Как мне это исправить?Я из них, если честно.Может быть, моя реализация файла канала неверна?
Обновлен код
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '<myid>', // App ID
channelUrl : '//tabletr.herokuapp.com/channel.php', // Channel File
status : false, // Check login status
cookie : true, // Enable cookies to allow the server to access the session
xfbml : false // Parse XFBML
});
// Additional initialization code here
FB.Canvas.setSize({ height: 1200 });
};
// If I comment out this function I don't get any unsafe URL errors
// anymore. I'm guessing that the include of the JavaScript code either
// fails to use the right protocol or is faulty in its implementation
// by Facebook. My money is on the former.
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
//js.src = "//tabletr.herokuapp.com/js/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
Я обновил свой код, основываясь на вопросе Stack OVerflow Facebook JavaScript SDK через HTTPS загрузка небезопасные элементы - это, однако, еще не решило проблему.Я обнаружил следующий отчет об ошибке 2012-01-19, в котором показаны те же симптомы, с которыми я сталкиваюсь.Скрестив пальцы, это будет исправлено в ближайшее время Facebook!
https://developers.facebook.com/bugs/192507854181725?browse=search_4f2bbd593f8798794293016