将 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,但它返回一个带有消息的错误对象,它无法创建没有消息的帖子,所以我尝试发送sourcemessage并得到相同的结果:只有消息已显示。

根据回答更新:

我试过使用你的代码和你的权限,结果是一样的:

我只得到文本:

也许是因为我以粉丝专页的身份发帖? 你知道如何解决吗?

根据回答更新 #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 上用户的“稍后观看”播放列表

将视频添加到 YouTube 上用户的收藏夹/点赞播放列表

如何在 youtube 等 Facebook 上分享我网站上的视频

在 Facebook 墙上自动嵌入视频

使用 Facebook Graph API 发布嵌入式视频链接

在 UIWebView 中播放 facebook 视频