Начало работы

В этом руководстве показано, как использовать Video API для создания видео на Странице. Предполагается, что вы умеете выполнять основные запросы cURL в инструменте командной строки (например, в "Терминале") или в приложении (например, Postman), а также знакомы с основными функциями Graph API Explorer.

Прежде чем начать

Вам понадобятся:

  • Существующее приложение Facebook. Если у вас его нет, перейдите на сайт Facebook for Developers, нажмите Мои приложения и создайте его.
  • Видео размером 10–20 МБ, которое нужно разбить на фрагменты размером 5 МБ (все они должны располагаться в одной папке).
  • Страница, на которой вы можете выполнять задачиCREATE_CONTENT.
  • Доступ к инструменту командной строки (например, "Терминал") или приложению, в котором можно выполнять запросы cURL (например, Postman).

Шаг 1. Получите маркер доступа пользователя

Обычно для получения маркеров доступа пользователей приложения в нем реализуется вход через Facebook. Однако в этом курсе вы можете использовать Graph API Explorer, поскольку в этом инструменте уже реализован вход через Facebook и он позволяет легко генерировать маркеры доступа для любого из ваших приложений.

  1. Загрузите Graph API Explorer и выберите свое приложение в раскрывающемся меню Приложение Facebook.

  2. В раскрывающемся меню Пользователь или Страница выберите пункт Получить маркер доступа пользователя, затем выберите свое имя пользователя и пройдите аутентификацию. Если вы используете существующее приложение, вход может быть уже выполнен.

  3. В разделе Разрешения воспользуйтесь полем поиска Добавить разрешение. Найдите и добавьте следующие разрешения: pages_manage_engagement и pages_read_user_content.
  4. Нажмите Сгенерировать маркер доступа.
  5. В открывшемся модальном окне выберите свое имя пользователя и Страницу, на которую нужно загрузить видео.
  6. Нажимайте Далее на следующих экранах, пока модальное окно не закроется. В результате ваше приложение получит выбранные разрешения и сгенерирует маркер доступа пользователя.
  7. Необязательное действие. Нажмите синий значок информации, чтобы убедиться, что вы предоставили приложению правильные разрешения (области действия).

Шаг 2. Получите ID Страницы и ее маркер доступа

  1. С помощью Graph API Explorer отправьте запрос к границе контекста GET /me/accounts. Этот запрос пользователя возвращает Страницы, доступ к которым вы предоставили приложению на последнем шаге.
  2. Найдите свою Страницу в ответе и скопируйте ее ID (id) и маркер доступа к Странице (access_token).
  3. {
      "data": [
        {
          "access_token": "EBACf...",  //Copy your Page Access Token
          "category": "Media",
          "category_list": [
            {
              "id": "163003840417682",
              "name": "Media"
            }
          ],
          "name": "Metricsaurus",
          "id": "1755847768034402",  //Copy your Page ID
          "tasks": [
            "ANALYZE",
            "ADVERTISE",
            "MODERATE",
            "CREATE_CONTENT",
            "MANAGE"
          ]
        }
      ],
      "paging": {
        "cursors": {
          "before": "MTc1NTg0Nzc2ODAzNDQwMgZDZD",
          "after": "MTc1NTg0Nzc2ODAzNDQwMgZDZD"
        }
      }
    }
    

Шаг 3. Создайте сеанс видео

  1. В инструменте командной строки перейдите в папку, содержащую фрагменты вашего видео, и отправьте запрос cURL к границе контекста POST /page-id/videos на хосте graph-video.facebook.com. Если вы используете приложение Postman, добавьте в тело запроса ключи и значения параметров в виде form-data.

  2. Пример запроса
    curl -X POST \
      "https://graph-video.facebook.com/1755847768034402/videos" \
      -F "access_token=EBACf..." \
      -F "upload_phase=start" \
      -F "file_size=77188035"
    
  3. Подставьте вместо ID Страницы (1755847768034402) в пути запроса ID своей Страницы, в качестве значения параметра access_token укажите только что скопированный маркер доступа к Странице, а в параметре file_size укажите общий размер своего видеофайла в байтах.

  4. API вернет сеанс видео:
    {
      "video_id": "225467151853466",
      "start_offset": "0",
      "end_offset": "1048576",
      "upload_session_id": "225467155186799"
    }
    
  5. Скопируйте все полученные значения, кроме end_offset.

Шаг 4. Загрузите первый фрагмент видео

Отправьте ещё один запрос к границе контекста POST /{page-id}/videos, указав upload_session_id и имя первого фрагмента видео.

Пример запроса

curl -X POST \
  "https://graph-video.facebook.com/1755847768034402/videos" \
  -F "access_token=EBACf..." \
  -F "upload_phase=transfer" \
  -F "start_offset=0" \
  -F "upload_session_id=225467155186799" \
  -F "video_file_chunk=@xaa"

Если вы используете cURL, добавьте перед именем файла символ @.

Если вы используете Postman, не указывайте символ @, задайте для параметра video_file_chunk значение Файл (чтобы появилось раскрывающееся меню, наведите курсор на строку) и вручную выберите первый фрагмент своего файла.

API вернет новое значение start_offset. Сохраните его.

{
  "start_offset": "10485760",
  "end_offset": "15728640"
}

Шаг 5. Загрузите остальные фрагменты видео

  1. Выполните тот же запрос, задав для параметра start_offset новое значение start_offset, полученное в предыдущем ответе, а в параметре video_file_chunk укажите имя следующего фрагмента видео.
  2. curl -X POST \
      "https://graph-video.facebook.com/1755847768034402/videos" \
      -F "access_token=EBACf..." \
      -F "upload_phase=transfer" \
      -F "start_offset=10485760" \
      -F "upload_session_id=225467155186799" \
      -F "video_file_chunk=@xab"
    
    API вновь вернет новое значение start_offset, с помощью которого вы сможете загрузить следующий фрагмент.
    {
      "start_offset":"15728640",
      "end_offset":"20971520"
    }
    
  3. Повторяйте эти действия, пока не загрузите все оставшиеся фрагменты видео в правильном порядке. Программа, с помощью которой вы разобьете видеофайл, скорее всего, добавит порядковые номера в имена фрагментов.

Шаг 6. Завершите сеанс загрузки

Когда будут загружены все фрагменты, завершите сеанс загрузки, отправив последний запрос к той же конечной точке и установив для параметра upload_phase значение finish.

Пример запроса

curl -X POST \
  "https://graph-video.facebook.com/1755847768034402/videos"  \
  -F "access_token=EBACf..." \
  -F "upload_phase=finish" \
  -F "upload_session_id=225467155186799"

В случае успеха API завершит сеанс загрузки и вернет значение true.

{
  "success": true
}

Мы соберем полное видео и закодируем его. Кодирование может занять несколько минут в зависимости от общего размера видеофайла.