我尝试使用Graph API将YouTube视频直接发布到Facebook活动墙。
当发布到FanPage墙上时,我得到了一个想要的结果(发布预览图片和视频本身),但是当发布到活动墙时,我只收到消息,没有任何视频和预览图片。
以下是代码:
var eventObj =
{
source:'http://www.youtube.com/v/'+youTubeID,
picture:'http://img.youtube.com/vi/'+youTubeID+'/0.jpg',
message: messageText,
name: eventName,
caption: newDateArray[0] + ' ' + newDateArray[1].substr(0, 5)
};
FB.api('/'+facebookEventID+'/feed', 'post', eventObj, function(response){
//response code...
}
执行此代码后,我在事件墙中收到一条新帖子,只显示messageText
。我已尝试仅发送source
,但之后它会返回一个错误对象,并显示消息,但无法创建没有消息的帖子,所以我尝试发送source
和message
并获得了相同的结果:只显示了消息。
根据答案进行更新:
我尝试过使用您的代码和权限,结果是一样的:
我只得到文字:
也许是因为我发布了FanPage? 你知道如何解决它吗?
更新#2基于答案:
似乎由于某种原因,从Facebook内部创建的事件具有较新版本的帖子UI,然后是使用图谱API从应用程序创建的事件。
这是来自Facebook内创建的事件:
这是来自使用Graph API创建的事件:
您可以看到第二个是旧版本,我猜这种差异也会导致将YouTube链接上传到Graph API创建的事件的问题,因为我成功将YouTube链接从API上传到由来自Facebook内部的我。
答案 0 :(得分:2)
真的?我可以使用我的测试应用发布YouTube活动链接:
function post() {
var eid = 508688182476978; // Event id.
FB.api(
'/' + eid + '/feed',
'post',
{
message: 'Testing SDK',
source: 'http://www.youtube.com/v/kohozJp9dNs',
picture: 'http://img.youtube.com/vi/kohozJp9dNs/0.jpg',
caption: 'beach video (caption)'
},
function(response) {
if (!response || response.error) {
console.log(response);
alert('Error occured');
} else {
alert('Post was successful! Action ID: ' + response.id);
}
}
);
}
...它显示视频的图片预览和标题:
......带着这些烫发
publish_actions,read_stream,user_events,publish_stream
我不需要你的例子中的name
param。
如果您使用API创建事件(不使用Web浏览器创建事件),请尝试启用“事件时区”迁移:
App Dashboard>高级>迁移>活动时区>使
另见该迁移的公告:https://developers.facebook.com/blog/post/2012/08/01/platform-migration--events-timezone-support/
为您的应用启用“事件时区”迁移后,使用api创建新事件,然后尝试在function post()
中发布上面所述的YouTube视频故事。