【问题标题】:Post YouTube video into a Facebook Event Wall将 YouTube 视频发布到 Facebook 活动墙
【发布时间】: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 内部的我。

【问题讨论】:

    标签: javascript facebook facebook-graph-api facebook-javascript-sdk


    【解决方案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/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    相关资源
    最近更新 更多