使Facebook对话框Feed Box显示在与模式相同的窗口中而不是页面的弹出窗口中

时间:2014-04-22 21:52:30

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

我希望Facebook Dialog Feed在同一页面中显示为模式。使用PHP在此调用之前对用户进行身份验证。我尝试使用iframe属性进行显示,但它仍然显示为弹出窗口。

代码如下:

window.fbAsyncInit = function () {
   FB.init({ appId: '****************', cookie: true, xfbml: true, oauth: true });
   if (typeof facebookInit == 'function') {
       facebookInit();
   }
};

(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));

function facebookInit() {
  FB.ui({
    url : 'http://url.com',
    method: 'feed',
    name: 'Hey',
    link: 'http://url.com',
    display: 'iframe',
    picture: '',
    caption: fb_description,
    }, function (response) {
        if (response && response.post_id) {
            window.location = "/hello";
        } else {
            window.location = "/hello";
        }
    }
  ); 
}

是否有理由将其作为弹出窗口出现而不是作为模态出现?

1 个答案:

答案 0 :(得分:1)

在同一窗口而不是弹出窗口中显示提要对话框的唯一方法是使用直接网址重定向。

您可以像这样使用它 -

function facebookInit() {
    var app_id = "{app-id}";
    var fb_description = "{description}";
    var redirect_uri = "{redirect-url}";
    var link = "{link to share}";
    var name = "{name}";

    var url =   "https://www.facebook.com/dialog/feed?"+
                "app_id="+app_id+
                "&caption="+fb_description+
                "&link="+link+
                "&name="+name+
                "&redirect_uri="+redirect_uri;

    location.href = url;
}

修改

documentation说 -

  

如果您使用的是JavaScript SDK,则在Facebook.com上的游戏中使用时,对于登录您应用的用户或默认情况下默认为模态iframe类型,并为每个人提供弹出窗口其他

如果你的应用程序在facebook中,那么它只会以模型iframe类型打开,否则会显示一个弹出窗口或完全在窗口上。