0

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

$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);
}
.......

然后它就像这样工作。

但我想得到像这张照片一样的结果。

我该怎么办?

4

1 回答 1

0

事件发布视频的官方参考(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": {}
}

所有参考:
-开始 - 初始化上传会话
-传输 - 上传视频块
-完成 - 发布视频

在函数中:

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);
    }
于 2019-12-27T07:00:20.393 回答