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

Uma*_*oon 12 facebook facebook-javascript-sdk

我想在facebook iframe应用程序中使用以下代码显示"Post to Your Wall"提要对话框:

<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>
Run Code Online (Sandbox Code Playgroud)

问题是它出现在这样一个新的弹出窗口中:

在此输入图像描述

如果没有出现在弹出窗口中,而不是像这样出现:

在此输入图像描述

我不希望Feed对话框出现在新的弹出窗口中,因为在大多数现代Web浏览器中都会阻止弹出窗口.我不知道为什么会这样.请帮忙.

Bre*_*ley 9

如果用户未授权您的应用程序,我很确定您会弹出一个弹出窗口.出于安全原因,Facebook让它以这种方式工作.如果您首先提示授权,那么您应该获得内联对话框.

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


p1n*_*nox 9

试试这个,把FB.ui放在FB.getLoginStatus里面:

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

  • 要强制执行相反的行为,请使用`display:'popup'`.如果您的FB.ui调用位于iframe中,就像我的一样,并且您不希望在iframe中捕获对话框,这非常有用. (2认同)