Facebook JavaScript SDK:FB.ui打开一个弹出窗口

Facebook JavaScript SDK:FB.ui打开一个弹出窗口,facebook,facebook-javascript-sdk,Facebook,Facebook Javascript Sdk,我正试图在facebook iframe应用程序中显示一个带有以下代码的“贴到墙上”提要对话框: <div id="fb-root"></div> <script src="http://connect.facebook.net/en_US/all.js"> </script> <script> FB.init({ appId:'249725835046216', cookie:true,

我正试图在facebook iframe应用程序中显示一个带有以下代码的“贴到墙上”提要对话框:

<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>

FB.init({
appId:'249725835046216',cookie:true,
状态:true,xfbml:true
});
ui({method:'feed',
信息:“网站Facebook超级酷”,
名称:“Facebook对话”,
链接:'http://developers.facebook.com/docs/reference/dialogs/',
图片:'http://fbrell.com/f8.jpg',
标题:“参考文档”,
描述:“对话框为应用程序与用户交互提供了一个简单、一致的界面。”
});
问题是它出现在一个新的弹出窗口中,如下所示:

而不是像这样出现而不出现在弹出窗口中:


我不希望提要对话框出现在新的弹出窗口中,因为在大多数阻止弹出窗口的现代web浏览器中。我不知道为什么会这样。请帮助。

我很确定,如果用户未授权您的应用程序,您会看到一个弹出窗口。出于安全原因,Facebook采用了这种方式。如果您首先提示进行授权,那么您应该得到内联对话框


请注意,授权请求本身将是一个弹出窗口,但您只需执行一次。在SomeCards Facebook应用程序中,我的工作方式是这样的,你想要的方式。请随意获取javascript代码,它不是特定于应用程序的。

我也有同样的UI问题,我也不喜欢弹出窗口

我刚找到


它帮助我们在同一窗口中重定向页面。但它并不能完美地解决我们的问题。

试试这个,将FB.ui放在FB.getLoginStatus中:

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

在我的例子中,通过将display设置为async,问题似乎已经解决了

     display: 'async',
我认为这是页面选项卡和画布的默认设置,但有时会加载一个新的弹出窗口,而不是出现在主窗口中。。
尽管设置了它(在我的例子中是页面选项卡),但从那时起我就没有注意到出现任何弹出窗口。

我知道这有点旧,但我在试图为自己解决这个问题时偶然发现了这个页面,这里的答案对我都不起作用

为了其他有这个问题的人的利益,这种情况发生在我身上,因为我试图在页面加载时调用对话框。将其移动到用户触发的事件(如单击)为我解决了问题。

文档中有一个“URL重定向”部分,用于:

因此,您可以在Javascript中执行
window.location=(此url)
,正确设置重定向url,这应该可以在没有弹出窗口的情况下工作

请注意,在v2.0中,提要对话框现在已被弃用,因此请查看以下内容:

要共享链接,请执行以下操作:

要共享开放式图表故事,请执行以下操作:

“display=popup”位会影响共享屏幕的外观,不会打开新窗口。
显示的可能值为:

async, iframe, page, popup, touch, wap

要强制执行相反的行为,请使用
display:'popup'
。如果您的FB.ui调用位于iframe中(如我的调用),并且您不希望对话框被困在iframe中,那么这将非常有用。谢谢您救了我的命!:)
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
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
async, iframe, page, popup, touch, wap