Перезагрузка комментариев facebook вызывает ошибку перекрестного происхождения

#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