Facebook Graph API:发布包含多个视频和照片的帖子

Posted

技术标签:

【中文标题】Facebook Graph API:发布包含多个视频和照片的帖子【英文标题】:Facebook Graph API: Publish post with multiple videos and photos 【发布时间】:2017-11-14 11:05:17 【问题描述】:

我尝试使用 php SDK 发布包含多个视频和照片的帖子。我使用批处理请求上传了视频和照片并获得了 ID。然后我使用 attach_media 传递媒体 ID 和发布数据。单张或多张照片都可以正常工作。但不适用于单个视频或多个视频。我收到此错误:“图表返回错误:(#10) 应用程序没有执行此操作的权限”,只要视频的 id 包含在 attach_media 中。

这是我使用的代码:

$fb = $this->init(); try // Returns a Facebook\FacebookResponse object        
$publishData = [ 'message' => $post['content']];

    if(count($media_ids) > 0)
        $publishData ['attached_media'] = [];
        foreach($media_ids as $key => $media_id)
            array_push($publishData['attached_media'],'"media_fbid":"' . $media_id . '"');
        
    
    $response = $fb->post(
        '/me/feed',$publishData
        ,
        $accessToken
    );

catch(FacebookResponseException $e)
    echo 'Graph returned an error: ' . $e->getMessage();
    echo $e->getTraceAsString();
    exit;

catch(FacebookSDKException $e)
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    echo $e->getTraceAsString();
    exit;

$graphNode = $response->getGraphNode();

有没有办法解决这个问题。谢谢。

【问题讨论】:

你找到方法了吗? 你找到方法了吗? 【参考方案1】:

事实上,您不能混合使用照片和视频。 Facebook 的 API 不允许这样做。你可以:

包含视频 + 文字(说明)的帖子 包含多张照片+文字的帖子

要发布视频,您必须点击

POST https://graph-video.facebook.com/v10.0/<page id>/videos?file_url=<public file URL>&access_token=<your access token>&published=true&description=<text>

file_urldescription 应该是 URL 编码的。

要发布多张照片,您首先要“上传”照片,结果您将拥有 ID。您设置为 attached_media 参数的那些 id。

获取照片 ID:

POST https://graph.facebook.com/<page id>/photos?url=<public file URL>&access_token=<access token>&published=false

注意published=false。这很重要。否则,您将发布包含单张照片的页面帖子。

最后发布实际的页面帖子:

POST https://graph.facebook.com/<page id>/feed?message=<text>&access_token=<access token>&attached_media[0]="media_fbid":"<id>"&attached_media[1]="media_fbid":"<id>"

附: 此方法假定您已将内容上传到其他地方,并且您拥有可访问此内容的公共 URL。如果您有原始文件并且想要将它们上传到 Facebook,那么您必须采用另一种方法。

【讨论】:

Facebook 允许通过 GUI 做很多事情。这些事情通过 API 是不可能的,因为他们不想在更高级别上实现自动化。【参考方案2】:

我知道已经有一段时间了,但我也遇到了同样的问题,现在是 2020 年......

我能够在页面时间轴中显示视频的唯一方法是使用以下 Facebook 文档,该文档涵盖了使用 Facebook SDK for PHP 将视频上传和发布到用户时间轴。

https://developers.facebook.com/docs/php/howto/example_upload_video

这显然不是最好的方法,但至少视频出现在时间轴上并带有一些标题和说明。

$data =
[
    'title' => 'Your title',
    'description' => 'Your description'
];

$response = $fb->uploadVideo($pageId, $videoUrl, $data, $token);

注意:videoUrl 必须是相对路径,因为 FacebookFile 类使用像 filesize 这样的函数。

【讨论】:

【参考方案3】:

Facebook 不允许在业务页面上直接发布包含多个视频和照片的帖子。但是,可以在个人页面上作为替代解决方案,您可以在个人页面上创建帖子并在企业页面上分享。

观看此视频了解更多信息:https://www.youtube.com/watch?v=AoK_1S71q1o

【讨论】:

以上是关于Facebook Graph API:发布包含多个视频和照片的帖子的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Graph API GET 请求 - 应包含“字段”参数(Swift,Facebook SDK v4.5.1)

Facebook Graph API GET 请求 - 应包含“字段”参数(Swift,Facebook SDK v4.5.1)

如何在 android 应用程序中使用多个 Graph API 获取 Facebook Notes Items 的评论?

如何使用 Graph API 获取家乡的 facebook 好友列表?

Facebook Graph API - 按用户标签获取照片

Facebook Graph API v2.0:获取即将发生的事件,包括生日