Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Facebook Graph API:发布包含多个视频和照片的帖子_Php_Facebook_Facebook Graph Api_Fbsdk - Fatal编程技术网

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

Php Facebook Graph API:发布包含多个视频和照片的帖子,php,facebook,facebook-graph-api,fbsdk,Php,Facebook,Facebook Graph Api,Fbsdk,我尝试使用PHPSDK发布包含多个视频和照片的帖子。我使用批处理请求上传了视频和照片,并获得了id。然后我使用附加的_媒体传递媒体id和post数据。对于一张或多张照片,一切都很好。但不适用于单个视频或多个视频。我遇到了这个错误:“Graph返回了一个错误:(#10)应用程序没有此操作的权限”,只要视频ID包含在附加的#U媒体中 以下是我使用的代码: $fb = $this->init(); try{ // Returns a Facebook\FacebookResponse objec

我尝试使用PHPSDK发布包含多个视频和照片的帖子。我使用批处理请求上传了视频和照片,并获得了id。然后我使用附加的_媒体传递媒体id和post数据。对于一张或多张照片,一切都很好。但不适用于单个视频或多个视频。我遇到了这个错误:“Graph返回了一个错误:(#10)应用程序没有此操作的权限”,只要视频ID包含在附加的#U媒体中

以下是我使用的代码:

$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();

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

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

我能够在页面的时间线中显示视频的唯一方法是使用以下Facebook文档,其中包括使用FacebookSDK for PHP将视频上传和发布到用户的时间线

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

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

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

注意:
videoUrl
必须是一个相对路径,因为FacebookFile类使用了
filesize

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


查看此视频了解更多信息:

事实是,您不能将照片和视频混用。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>
请注意
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>"}
POSThttps://graph.facebook.com//feed?message=&access_token=&attached_media[0]={“媒体ID”:“”}和附加的媒体[1]={“媒体ID”:“”}
附言。
这种方法假设您将内容上载到其他地方,并且您有公共URL,其中包含此内容。如果你有原始文件,你想上传到Facebook,那么你必须采取另一种方法。

你找到办法了吗?你找到办法了吗?
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>"}