Facebook JavaScript SDK: FB.ui открывает всплывающее окно

Я пытаюсь показать диалог "Опубликовать в вашу стену" со следующим кодом в приложении iframe facebook:

<div id="fb-root"></div>
  <script src="http://connect.facebook.net/en_US/all.js">
  </script>
  <script>
     FB.init({ 
        appId:'249725835046216', cookie:true, 
        status:true, xfbml:true 
     });

     FB.ui({ method: 'feed', 
        message: 'Facebook for Websites is super-cool',
        name: 'Facebook Dialogs',
        link: 'http://developers.facebook.com/docs/reference/dialogs/',
        picture: 'http://fbrell.com/f8.jpg',
        caption: 'Reference Documentation',
        description: 'Dialogs provide a simple, consistent interface for applications to interface with users.'



        });
  </script>

Проблема заключается в том, что она появляется в новом всплывающем окне:

enter image description here

Вместо того, чтобы появляться как это, не появляясь во всплывающем окне:

enter image description here

Я не хочу, чтобы диалоговое окно фида отображалось в новых всплывающих окнах, потому что в большинстве современных веб-браузеров, где всплывающие окна блокируются. Я не знаю, почему это происходит. Пожалуйста, помогите.

Ответ 1

Я уверен, что вы получите всплывающее окно, если пользователь не разрешил ваше приложение. Facebook заставил его работать именно по соображениям безопасности. Если вы сначала запрашиваете авторизацию, вы должны получить встроенный диалог.

Обратите внимание, что запрос авторизации сам по себе будет всплывающим, но вам нужно только один раз это сделать. У меня есть вещи, которые работают так, как вы хотите, в приложении с некоторыми плагинами Facebook. Не стесняйтесь захватить javascript-код, который не определен для приложения.

Ответ 2

Попробуйте это, поместите FB.ui внутри FB.getLoginStatus:

FB.getLoginStatus(function(response) {
  if (response.authResponse) {
    FB.ui({ 
      method: 'feed',
      ...
      display: 'dialog'       
    });  
  }
}); 

Ответ 3

У меня такая же проблема с пользовательским интерфейсом, и мне тоже не нравится всплывающее окно.

Я только что нашел ссылку.

Это помогает нам перенаправить страницу в том же окне. Но это не позволяет решить нашу проблему отлично.

Ответ 4

Я знаю, что это немного устарело, но я наткнулся на эту страницу, пытаясь решить эту проблему для себя, и ни один из ответов здесь не работал у меня.

В интересах любого, у кого есть эта проблема, это происходило для меня, потому что я пытался вызвать диалог на загрузке страницы. Перемещение его на событие, инициированное пользователем (например, щелчок) разрешило его для меня.

Ответ 5

в моем случае проблема, похоже, была решена путем установки отображения на async

     display: 'async',

Я думаю, что это значение по умолчанию для вкладок страниц и холста, но время от времени вместо того, чтобы появляться в главном окне, оно загружает новое всплывающее окно. после установки его (вкладка страницы в моем случае), я не заметил, что с тех пор появилось всплывающее окно.

Ответ 6

В разделе "Перенаправление URL" в документах для "Диалог каналов" :

https://www.facebook.com/dialog/feed?
  app_id=145634995501895
  &display=popup&caption=An%20example%20caption 
  &link=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2F
  &redirect_uri=https://developers.facebook.com/tools/explorer

Итак, вы можете сделать window.location=(this url) в Javascript, правильно настроив redirect_url, и это должно работать без всплывающего окна.

Обратите внимание, что диалог подачи теперь устарел в версии 2.0, поэтому вместо Диалоговое окно совместного доступа:

Чтобы поделиться ссылкой:

https://www.facebook.com/dialog/share?
  app_id=145634995501895
  &display=popup
  &href=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2F
  &redirect_uri=https%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fexplorer

Чтобы поделиться историей Open Graph:

https://www.facebook.com/dialog/share_open_graph?
  app_id=145634995501895
  &display=popup
  &action_type=og.likes
  &action_properties=%7B%22object%22%3A%22https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2F%22%7D
  &redirect_uri=https%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fexplorer

Бит "display = popup" влияет на просмотр экрана общего доступа, он не открывает новое окно. Возможные значения для display:

async, iframe, page, popup, touch, wap