我正在使用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链接)...问题是,当我点击按钮,会打开一个窗口,但实际上是空白的。
通过打开Google 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对话框不起作用
答案 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;
});
顺便说一句,我不喜欢这种方法,但它似乎是完成我想要做的事情的唯一方法。现在我只需要知道如何获得共享功能的结果(如果帖子是否共享)。
希望这会有所帮助:)