Facebook Javascript SDK Feed对话框显示空白窗口

时间:2015-03-03 16:20:33

标签: javascript php facebook facebook-graph-api

我正在使用Facebook Javascript SDK在我的页面上发布,我已经在这里阅读了一些内容:Facebook feed dialog: allow user to select destination page or group所以到目前为止我一直在使用这段代码:

$("button#shareOn").on('click',function(event){
    event.preventDefault();

    var _parentForm=$(this).parents('form:first');
    var _pageSelect=_parentForm.find("select[name='pagesList']");
    var _pID=_parentForm.find("#pID").attr('value');
    var _vURL=_parentForm.find("#_vURL").attr('value');

    FB.ui({
        app_id:app_id,
        method: 'feed',
        from: _pageSelect.val(),
        name: 'Title',
        caption: 'Subtitle - 26/02/2013',
        description: 'My text',
        link: _vURL,
    },function(response){
        console.log(response);
    });

});

_pageSelect.val()是我要发布的网页的ID,_vURL是我要分享的网址(youtube链接)...问题是,当我点击按钮,会打开一个窗口,但实际上是空白的。

通过打开Goog​​le Chrome的开发控制台,有时我会看到与该窗口相关的500内部服务器错误,有时它只会显示为空,但我无法弄清楚究竟是什么导致它。
我还尝试过urlencode来自PHP的网址或来自Javascript的encodeURIComponent,但没有任何改变。

有时候窗口只出现Title,Subtitle和Description,所以我猜这个链接应该是错误,但我知道Facebook JS SDK用来写Link not properly formatted或类似API error (100)之类的东西。

更新

似乎Feed对话框已开始协作,但仍未按预期工作。这是更新的代码:

$("button#shareOn[name='shareVideo']").on('click',function(event){
    event.preventDefault();

    var _parentForm=$(this).parents('form:first');
    var _pageSelect=_parentForm.find("select[name='pagesList']");
    var _pID=_parentForm.find("#pID").attr('value');
    var _vURL=_parentForm.find("#_vURL").attr('value');
    var options={
        app_id:app_id,
        method:'feed',
        from:_pageSelect.val(),
        link:_vURL,
        caption:'test'
    }

    console.log(options);

    FB.ui( options, function(response){});

});

窗口正在打开,但有时它是空白的,有时会显示一个链接,这不是视频的网址,但它只是www.youtube.com。我一直在尝试使用Facebook URL调试器,它向我显示我正在使用的URL实际上是正确的。但是Feed对话框不起作用

1 个答案:

答案 0 :(得分:0)

所以,我得到了答案,这并不是我所期待的,但至少它是有效的。由于Facebook文档没有指出这一点,我发现了sharer方法,我在Javascript函数中调用它。 所以,这是代码:

$("button#shareOn[name='shareVideo']").on('click',function(event){
    event.preventDefault();

    var _parentForm=$(this).parents('form:first');
    var _pageSelect=_parentForm.find("select[name='pagesList']");
    var _pID=_parentForm.find("#pID").attr('value');
    var _vURL=_parentForm.find("#_vURL").attr('value');
    var leftPosition, topPosition;
    var windowFeatures = "status=no,height=" + 400 + ",width=" + 300 + ",resizable=yes,left=" + leftPosition + ",top=" + topPosition + ",screenX=" + leftPosition + ",screenY=" + topPosition + ",toolbar=no,menubar=no,scrollbars=no,location=no,directories=no";

    leftPosition = (window.screen.width / 2) - ((300 / 2) + 10);
    topPosition = (window.screen.height / 2) - ((400 / 2) + 50);

    window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(_vURL),'sharer', windowFeatures);
    return false;
});

顺便说一句,我不喜欢这种方法,但它似乎是完成我想要做的事情的唯一方法。现在我只需要知道如何获得共享功能的结果(如果帖子是否共享)。

希望这会有所帮助:)