我尝试使用 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
并得到相同的结果:仅显示消息。
根据答案更新:
我试过使用你的代码和你的权限,结果是一样的:
我只得到文本:
也许是因为我是作为粉丝专页发帖的? 您知道如何解决吗?
根据答案更新#2:
似乎出于某种原因,从 Facebook 内部创建的事件具有更新版本的帖子 UI,然后从使用图形 API 的应用程序创建的事件。
这是在 Facebook 中创建的事件:
这是使用 Graph API 创建的事件:
您可以看到第二个是旧版本,我想这种差异也会导致上传 YouTube 链接到由 Graph API 创建的事件的问题,因为我成功地将 YouTube 链接从 API 上传到由 Graph API 创建的事件我来自 Facebook。
最佳答案
真的吗?我能够使用我的测试应用程序发布事件的 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
参数。
通过 API 创建的事件
如果您使用 API 创建事件(而不是使用网络浏览器创建事件),请尝试启用“事件时区”迁移:
App Dashboard > 高级 > 迁移 > 事件时区 > 启用
另请参阅该迁移的公告:https://developers.facebook.com/blog/post/2012/08/01/platform-migration--events-timezone-support/
为您的应用启用事件时区迁移后,使用 API 创建一个新事件,然后尝试按照上面在 function post()
中编写的方式发布 YouTube 视频故事。
关于javascript - 将 YouTube 视频发布到 Facebook 事件墙上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13007621/