Загрузка видео с помощью API Graph с использованием cURL и PHP - PullRequest
0 голосов
/ 26 августа 2011

Я пытаюсь загрузить видео с помощью API Graph.(Я не использую устаревший API REST, поскольку Facebook не поощряет это делать).

В основном я следую базовому примеру загрузки видео в Обновления платформы Юньнань Ву: Разработчик операцийЛюбовь , где он использует HTML-форму для загрузки файла.Вместо этого я хочу сделать это автоматически без участия пользователя и попытался с помощью cURL .Мой сегмент кода выглядит следующим образом (который я нашел в другом посте здесь)

$post_url = "https://graph-video.facebook.com/me/videos?"
 . "title=" . $video_title. "&description=" . $video_desc 
 . "&". $access_token;

$ch = curl_init();
$data[basename($file)] = '@' . realpath("klfaceevo.mp4");
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res = curl_exec($ch);

Я получаю следующее.

Метод не реализован

Неверный методв запросе

Как я могу решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Используйте Facebook PHP SDK, он сделает большую часть работы за вас. Вот так я делаю автоматическую публикацию видео на страницу.

  • Получить токен доступа с правами доступа

    Этот шаг выполняется только в первый раз, чтобы получить действительный токен доступа. Если вы укажете разрешение offline_access, как в примере, срок действия этого токена не истечет (если, я думаю, пользователь не изменит пароль). Документация Facebook называет это «долгоживущим». Поэтому сохраняйте токен, и вашему приложению разрешается публиковать видео (и другие материалы) без участия пользователя в любое время.

      // Set up params
      $params = array('canvas' => 1,
                     'fbconnect' => 0,
                     'scope' => "video_upload,publish_stream,manage_pages,offline_access");
    
      // Get login URL
      $loginUrl = $facebook->getLoginUrl($params);
    
      // Redirect user to the login URL
      header("Location:{$loginUrl}");
    
  • Создать новый экземпляр объекта Facebook и вызвать его метод api ()

      $facebook = new Facebook(array('appId'  => $app_id,
                                      'secret' => $app_secret,
                                      'cookie' => TRUE,
                                      ));
    
    
      try {
            $video = $facebook->api('/<page id>/videos', 'POST', 
                                array('access_token' => $access_token,
                                      'source' => '@' . $file,
                                      'description' => $video_desc,
                                      ));
    
              }catch (FacebookApiException $e) {
                 error_log($e);
           }
    
  • Некоторые заметки

    • Размер видео не должен превышать 1 ГБ.
    • Значение CURLOPT_TIMEOUT по умолчанию установлено равным 60 (секундам). Увеличьте это значение, если вы получите тайм-аут. Вы найдете этот параметр в base_facebook.php.
    • Если вы хотите обрабатывать специальные символы, обязательно используйте кодировку utf-8 и htmlspecialchars (). (Если вы жестко кодируете текст, не забудьте установить в вашем редакторе кодировку utf-8, как я).
    • Может пройти несколько минут, прежде чем ваше видео отобразится в Facebook.
0 голосов
/ 11 октября 2011

Вы должны иметь возможность поместить все параметры в массив $ data, а затем обрезать параметры строки запроса.

т.е.

$video_title = "test title";
$video_desc = "test desc";
$access_token = YOUR_ACCESS_TOKEN;

$data = array('name' => 'file', 'file' => '@'.realpath("movie.m4v"), 'access_token' => $access_token, '_title' => $video_title, 'description' => $video_desc);
$post_url = "https://graph-video.facebook.com/me/videos"; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...