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

时间:2017-11-14 11:05:17

标签: php facebook facebook-graph-api fbsdk

我尝试使用PHP SDK发布包含多个视频和照片的帖子。我使用批量请求上传了视频和照片,并获得了ID。然后我使用attached_media传递媒体ID和帖子数据。单张或多张照片的效果很好。但不适用于单个视频或多个视频。我收到此错误:" Graph返回错误:(#10)应用程序没有此操作的权限"只要视频的ID包含在attached_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();

无论如何都要解决这个问题。谢谢。

3 个答案:

答案 0 :(得分: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,那么您必须采用另一种方法。

答案 1 :(得分:0)

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

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

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之类的功能。

答案 2 :(得分:0)

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

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