1

我尝试使用 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得到相同的结果:只显示消息。

根据答案更新:

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

我只得到文字:

在此处输入图像描述

也许是因为我作为 FanPage 发布?你知道如何解决它吗?

更新 #2 基于答案:

似乎出于某种原因,从 Facebook 内部创建的事件具有更新版本的帖子 UI,然后是使用 Graph API 从应用程序创建的事件。

这是来自 Facebook 中创建的事件: 在此处输入图像描述

这是来自使用 Graph API 创建的事件: 在此处输入图像描述

您可以看到第二个是旧版本,我猜这种差异也导致了将 YouTube 链接上传到由 Graph API 创建的事件的问题,因为我成功地将 YouTube 链接从 API 上传到我从内部创建的事件Facebook。

4

1 回答 1

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);
      }
    }
  );
}

...并显示视频的图片预览和标题:

活动上的 youtube 链接

...用这些烫发

publish_actions,read_stream,user_events,publish_stream

我不需要name像您的示例中那样的参数。

通过 API 创建的事件

如果您使用 API 创建事件(而不是使用 Web 浏览器创建事件),请尝试启用“事件时区”迁移:

应用仪表板> 高级 > 迁移 > 事件时区 > 启用

另请参阅该迁移的公告:https ://developers.facebook.com/blog/post/2012/08/01/platform-migration--events-timezone-support/

为您的应用启用事件时区迁移后,使用 api 创建一个新事件,然后尝试在function post().

于 2012-10-23T22:38:37.200 回答