У меня такая же проблема.Второй день в поисках решения.И нашел только один способ: для закрытия активного диалога FB вы должны выполнить следующий код в родительском окне, где доступен FB JS и где был вызван FB.ui:
FB.Dialog.remove(FB.Dialog._active);
Итак, если вы хотите, чтобы диалог приглашения автоматическизакрывает и не перенаправляет на любую другую страницу, выполните следующие действия:
1) Установите целевое значение атрибута и как "_self":
target = "_ self"
2) создать URL-адрес / страницу обратного вызова на вашем сайте, например https://mysite/close_dialog.html
3) Установить атрибут attr для только что созданного URL:
action= "http://mysite/close_dialog.html"
4) В вашем файле close_dialog.html следует JS:
<script type="text/javascript">
if (document.location.protocol == 'https:') {
document.location = 'http://mysite/close_dialog.html';
} else {
top.window.FB.Dialog.remove(top.window.FB.Dialog._active);
};
</script>
ОБНОВЛЕНИЕ:
5) Есть одинвыдайте еще так: FB iframe загружен по https, но если форма запроса 'action' attr использует 'http' - пользователь получит предупреждение браузера. Но если форма запроса 'action' имеет 'https' - iframe js не может получить доступ кродитель загружен по 'http'. Таким образом, это причина, почему вы должны использовать действие по 'https'
Надеюсь, это поможет
Если у вас есть лучшерешение или вы можете улучшить это - пожалуйста, дайте всем знать об этом, спасибо за любые комментарии