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

Tam*_*ran 3 php facebook facebook-graph-api fbsdk

我尝试使用 PHP SDK 发布包含多个视频和照片的帖子。我使用批量请求上传视频和照片并获取了 id。然后我使用 Attached_media 传递媒体 ID 和发布数据。对于单张或多张照片来说效果很好。但不适用于单个视频或多个视频。我收到此错误:“图表返回错误:(#10) 应用程序没有执行此操作的权限”,每当 Attached_media 中包含视频 id 时。

这是我使用的代码:

$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();
Run Code Online (Sandbox Code Playgroud)

有什么办法可以解决这个问题吗?谢谢。

Kra*_*mir 5

事实是,您无法混合照片和视频。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>
Run Code Online (Sandbox Code Playgroud)

和应该进行 URL 编码file_urldescription

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

获取照片 ID:

POST https://graph.facebook.com/<page id>/photos?url=<public file URL>&access_token=<access token>&published=false
Run Code Online (Sandbox Code Playgroud)

注意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>"}
Run Code Online (Sandbox Code Playgroud)

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