#javascript #facebook #facebook-graph-api
#javascript #Facebook #facebook-graph-api
Вопрос:
Я внедрил комментарии Facebook в свое приложение, используя код, предоставленный Facebook здесь:https://developers.facebook.com/docs/plugins/comments /
Комментарии загружаются правильно, и жизнь прекрасна. Однако у меня есть панель настроек для пользователей с правами администратора, которая предоставляет возможность изменять:
- Количество сообщений
- Тема
- Заказать по
Когда пользователь изменяет их, я использую
FB.XFBML.parse(this.fbEl);
чтобы обновить комментарии. Это работает, однако оно отображается некорректно и выдает ошибку:
Неперехваченная ошибка безопасности: заблокирован фрейм с источником «https://www.facebook.com «из-за доступа к фрейму с исходным кодом»http://mysite.dev«. Фрейм, запрашивающий доступ, имеет протокол «https», фрейм, к которому осуществляется доступ, имеет протокол «http». Протоколы должны совпадать.
Я безуспешно искал в Интернете. Кто-нибудь знает, как решить эту проблему?
Код SDK выглядит следующим образом:
<div id="fb-root"></div>
<script>
(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/en_US/sdk.js#xfbml=1amp;version=v2.0";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="fb-comments" id="fb-comments" data-href="{{data.url}}" data-width="100%" data-numposts="{{data.numPosts}}" data-order-by="{{data.orderBy}}" data-colorscheme="{{data.colorScheme}}"></div>
Комментарии:
1. Как вы ссылаетесь на JavaScript SDK в своем приложении?
2. Приведенный выше шаблон, который добавляется на страницу на специальной основе.
3. Не то чтобы это имело смысл, но вы могли бы попробовать обновить js.src до = » connect.facebook.net/en_US/sdk.js#xfbml=1amp;version=v2.0 «для принудительного использования протокола. Происходит ли это в нескольких браузерах?
4. Это просто использует текущее окно. местоположение в качестве основы для этого URL. К сожалению, сигары нет
Ответ №1:
К сожалению, нет правильного способа исправить это. Facebook должен исправить это в рамках своего JS framework. Хорошей новостью является то, что я нашел быстрое исправление, которое будет отображать окно ваших комментариев даже при возникновении этой ошибки. Я протестировал код, и Facebook позволяет мне оставлять комментарии даже после возникновения ошибки.
это исправление использует jQuery, а также использует setTimeout для ожидания (и угадывания) вызова ошибки перед удалением класса. Я уверен, что есть лучшие способы реализовать это исправление, но пока у меня это работает. Например, вы могли бы изменить время ожидания с 1 секунды на 2 секунды, чтобы повысить вероятность выполнения скрипта после возникновения ошибки.
setTimeout(function(){$('.fb-comments').removeClass('fb_hide_iframes');},1000);
Комментарии:
1. Вы правы, решением для меня было обновление страницы. Вытащи свои пальцы из FB.
2. Я уверен, что это сработает, и уверен, что это безумие, что нет ничего лучше почти два года спустя. Я надеялся избежать этого взлома.
3. Сообщил о проблеме. developers.facebook.com/bugs/191886764743793