【问题标题】:How to upload a video to Facebook event page via PHP如何通过 PHP 将视频上传到 Facebook 活动页面
【发布时间】:2020-04-15 10:38:33
【问题描述】:

我已经在我的测试页面上创建了一个活动,我将从我的网站上传一个视频到该活动页面。我使用了下面的代码,但它不起作用。

$data = [
       'title' => 'test Video',
       'description' => 'This is test video',
       'source' => $fb->videoToUpload($video_path),
];

try {
       $response = $fb->post('/' . $event_id . '/videos', $data, $page_token);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
       return 'Graph returned an error: ' . $e->getMessage();
} catch(Facebook\Exceptions\FacebookSDKException $e){
       return 'Facebook SDK returned an error: ' . $e->getMessage();
}

$graphNode = $response->getGraphNode();

我收到了这个错误。

图表返回错误:(#33) 此对象不存在或不支持此操作。

所以我修复了一些这样的部分。

$data = [    
   .......
   'source' => $video_path
];
try{
   $response = $fb->post('/' . $event_id . '/feed', $data, $page_token);
}
.......

Then it works like this.

But I want to result like as this picture.

我该怎么办?

【问题讨论】:

  • 您是否尝试查看所有官方参考:Here您确定 $video_path 包含类似参考的路径吗?
  • 谢谢。 $response = $fb->post('/me/videos', $data, $page_token);当我尝试这个时,它在我的测试页面上运行良好。 This video is uploaded that way.。但我想在活动页面上上传,而不是在我的页面上。
  • 我发布的代码是用于视频源的,您可以使用此规则编辑发布位置:将视频发布到以下端点:/{user-id}/videos /{event-id}/视频 /{page-id}/videos /{group-id}/videos 参考:link
  • 我也试过了。但我不能。首先,活动中没有视频。在图形 API 资源管理器中,我发送了一个“event_id / 视频”请求但没有结果。如果我在活动页面上手动发布视频,我们可以在讨论选项卡中看到该帖子。组、页面或用户配置文件上有视频,并且“get ('object_id / videos', $ token)”命令已执行,但未在事件中执行。你怎么看待这件事?谢谢。

标签: php facebook-graph-api facebook-events video-upload


【解决方案1】:

事件发布视频的官方参考(Api Graph v5.0):
上传:

$fb = new Facebook\Facebook([
  'app_id' => '{app-id}',
  'app_secret' => '{app-secret}',
  'default_graph_version' => 'v2.2',
  ]);

$data = [
  'title' => 'My Foo Video',
  'description' => 'This video is full of foo and bar action.',
  'source' => $fb->videoToUpload('/path/to/foo_bar.mp4'),
];

try {
  $response = $fb->post('/me/videos', $data, 'user-access-token');
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  // When Graph returns an error
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  // When validation fails or other local issues
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}

$graphNode = $response->getGraphNode();
var_dump($graphNode);

echo 'Video ID: ' . $graphNode['id'];

发布活动:

/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->get(
    '/{event-id}/videos',
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */

如果看到结果 JSON :

{
    "data": [],
    "paging": {}
}

所有参考:
-Start - Initialize an upload session
-Transfer - Upload video chunks
-Finish - Post the video

函数中:

private function postFBVideo($authResponse, $fileObj, $formData)
    {
        FacebookSession::setDefaultApplication('yourAppkey', 'yourAppSecret');
        $ajaxResponse = '';
        try {
            $session = new FacebookSession($authResponse->accessToken);
        } catch (FacebookRequestException $ex) {
            // When Facebook returns an error
            $ajaxResponse = 'FB Error ->' . json_encode($ex) ;
        } catch (\Exception $ex) {
            // When validation fails or other local issues
            $ajaxResponse = 'FB Validation Error - ' . json_encode($ex) ;
        }
        if ($session) {
            $response = (new FacebookRequest(
                $session, 'POST', '/.$idevent./videos', array(
                    'source' => new CURLFile('path', 'video/MOV'),
                    'message' => $formDataMessage,
                )
            ))->execute();
            $ajaxResponse = $response->getGraphObject();
        }
        return json_encode($ajaxResponse);
    }

【讨论】:

  • 感谢您的回复。但它不起作用。活动页面上没有视频。因此无法识别“事件 ID/视频”。
  • 编辑答案,先上传然后用它发布到事件。
  • $fb->post('/me/videos', $data, 'user-access-token');这是很好的工作。但我想上传到活动页面,而不是主页。 $fb->get('event-id/videos', $token)----这个结果为空。而 $fb->post('event-id/videos', $data, $token) 不起作用。当我尝试此操作时,出现以下错误:“图形返回错误:(#33)此对象不存在或不支持此操作”。结果,我必须将视频上传到活动页面并在需要时获取。这可能吗?
  • 您拥有发布视频的所有权限?参考:HERE
  • 当然,我拥有发布视频的所有权限。
猜你喜欢
  • 2011-11-12
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多