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


Facebook Javascript SDK Feed Dialog showing blank window

我正在使用Facebook Javascript SDK在我的页面上发帖,我已经在这里读到了一些关于这方面的内容:Facebook提要对话框:允许用户选择目标页面或组,所以到目前为止我一直在使用以下代码:

$("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是我想要共享的url(youtube链接)。。。问题是,当我点击按钮时,会打开一个窗口,但实际上是空白的。

通过打开Google Chrome的开发控制台,有时我会看到与该窗口相关的500内部服务器错误,有时它只会显示为空,但我不知道是什么导致了它。
我也尝试过urlencode(来自PHP的url)或encodeURIComponent(来自Javascript的url),但没有任何变化。

有时窗口只显示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){});
});

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

所以,我得到了答案,这并不是我所期望的,但至少它有效。由于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;
});

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

希望这能帮助到某人:)