将 YouTube 视频发布到 Facebook 活动墙
Posted
技术标签:
【中文标题】将 YouTube 视频发布到 Facebook 活动墙【英文标题】:Post YouTube video into a Facebook Event Wall 【发布时间】:2012-10-22 08:35:59 【问题描述】:我尝试使用 Graph API 将 YouTube 视频直接发布到 Facebook 活动墙上。
当发布到粉丝专页墙时,我得到了想要的结果(发布带有预览图片和视频本身),但是当发布到活动墙时,我只收到消息,没有任何视频和预览图片。
代码如下:
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...
执行此代码后,我在 Event Wall 中获得了一个新帖子,其中仅显示 messageText
。我试过只发送source
,但它返回一个带有消息的错误对象,它无法创建没有消息的帖子,所以我尝试发送source
和message
并得到相同的结果:只有消息已显示。
根据回答更新:
我试过使用你的代码和你的权限,结果是一样的:
我只得到文本:
也许是因为我以粉丝专页的身份发帖? 你知道如何解决吗?
根据回答更新 #2:
似乎出于某种原因,从 Facebook 内部创建的事件具有更新版本的帖子 UI,然后是使用 Graph API 从应用程序创建的事件。
这是在 Facebook 中创建的事件:
这是来自使用 Graph API 创建的事件:
您可以看到第二个是旧版本,我猜这种差异也导致了将 YouTube 链接上传到由 Graph API 创建的事件的问题,因为我成功地将 YouTube 链接从 API 上传到由Facebook 内部的我。
【问题讨论】:
【参考方案1】:真的吗?我能够使用我的测试应用发布活动的 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 视频故事。
【讨论】:
这很奇怪,因为我也以页面(而不是用户)的身份发布。我的用户发布为名为“Dick Sharpewitz”的页面(在我的屏幕截图中)。登录的用户是“Dick Sharpewitz”页面的管理员和活动的创建者。当您代表用户发帖时,该用户是主页管理员还是活动创建者?如果没有,请尝试使用用户创建的事件。 用户是页面的管理员,事件是由页面创建的(来自我的网站,由 Facebook API)。您的活动是从 Facebook 还是从 API 创建的? 我使用 facebook.com(网络浏览器)在屏幕截图中创建了事件 是的,这绝对是问题所在,我可以将 YouTube 视频上传到我自己创建的事件中,但不能上传到应用程序创建的事件中。我认为这是 Facebook 中的一个问题,正如您所看到的(查看我的问题中的更新 #2),从 Facebook 内部创建的事件具有不同的帖子 UI(实际上是更新的 UI),然后是由图形 API 调用创建的事件,所以它们之间可能存在更多差异......也许其中之一就是YouTube解析。非常感谢您的帮助 !你的回答肯定让我更深入地调查了这个问题。 嘿 Alon_A,要使用 api 获得“新”事件 UI,我会尝试在您的应用程序设置中启用“事件时区”迁移 App Dashboard > 高级 > 迁移 > 事件时区 >使能够。你打得很好。另见公告:developers.facebook.com/blog/post/2012/08/01/…以上是关于将 YouTube 视频发布到 Facebook 活动墙的主要内容,如果未能解决你的问题,请参考以下文章
如何在 youtube 等 Facebook 上分享我网站上的视频