В этом документе рассказывается, как использовать Facebook Stories API для публикации историй на Страницах Facebook.
Чтобы опубликовать историю, приложению нужно выполнить следующие действия:
Это руководство написано с расчетом, что вы ознакомились с обзором Pages API и реализовали необходимые компоненты, а также ознакомились с руководством по началу работы.
Пользователям вашего приложения потребуется возможность выполнять действие CREATE_CONTENT на Странице, представляемой маркером доступа к Страницам. Кроме того, они должны будут дать вашему приложению следующие разрешения:
pages_manage_posts; pages_read_engagement; pages_show_list.Если в запросах API используется системный пользователь компании, также потребуется разрешение business_management.
Фото и видео должны соответствовать следующим требованиям.
| Свойство | Требования |
|---|---|
Тип файла | .jpeg, .bmp, .png, .gif, .tiff |
Размер файла | Не более 4 МБ. Для файлов .png рекомендуется размер не более 1 МБ, иначе на изображении могут появляться видимые пиксели. |
| Свойство | Требования | ||
|---|---|---|---|
Тип файла | .mp4 (рекомендуется) | ||
Соотношение сторон | 9 x 16 | ||
Разрешение | 1080 x 1920 пикселей (рекомендуется). Минимум: 540 x 960 пикселей | ||
Частота кадров | 24–60 кадров в секунду | ||
Продолжительность | 3–90 секунд. Максимальная длина видео Reels, опубликованного как история на Странице Facebook, — 60 секунд. | ||
Настройки видео |
| ||
Настройки аудио |
|
GET на просмотр списка своих историй истории в архиве, включите архив историй Facebook 
При тестировании вызова API можно добавить параметр access_token и задать в нем маркер доступа. Однако при выполнении безопасных вызовов из приложения следует использоваться класс маркера доступа.
Примеры кода в этом документе отформатированы для удобства чтения. Замените выделенный жирным шрифтом и курсивом текст, например page_id, собственными значениями.
Чтобы опубликовать видеоисторию на Странице Facebook, вы должны инициализировать сеанс загрузки видео на серверах Meta, загрузить видео на серверы Meta и затем опубликовать видеоисторию.
Чтобы инициализировать сеанс загрузки, отправьте запрос POST к конечной точке /page_id/video_stories, указав в качестве page_id ID вашей Страницы Facebook и задав для параметра upload_phase значение start.
curl -X POST "https://graph.facebook.com/v24.0/page_id/video_stories" \
-d '{
"upload_phase":"start",
}'
В случае успеха ваше приложение получит ответ JSON с указанием ID видео и URL на Facebook, куда вы будете загружать это видео.
{
"video_id": "video_id",
"upload_url": "https://rupload.facebook.com/video-upload/v24.0/video_id",
} Если вы инициализировали сеанс загрузки видео и получили URL для загрузки, можно загружать видео. Вы можете загрузить:
Чтобы загрузить файл, размещенный в открытом доступе, отправьте запрос POST к конечной точке upload_url, полученной на этапе инициализации, со следующими параметрами:
file_url (укажите в качестве значения URL вашего видеофайла).Убедитесь, что используется хост rupload.facebook.com.
API теперь будет отклонять файлы, размещенные на сайтах, которые ограничивают доступ через robots.txt. Разработчикам необходимо убедиться, что сайт хостинга позволяет пользовательскому агенту "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" извлекать размещенный файл.
Файлы, размещенные на Meta CDN (например, URL-адреса fbcdn), будут отклонены. Вместо этого разработчики могут использовать функцию кросспостинга для публикации видео на нескольких страницах, не загружая видео на каждую отдельно. Ознакомьтесь с нашим подробным руководством по кросспостингу.
curl -X POST "https://rupload.facebook.com/video-upload/v24.0/video_id" \
-H "file_url: https://some.cdn.url/video.mp4"
Чтобы загрузить локальный файл, отправьте запрос POST к конечной точке upload_url, полученной на этапе инициализации, со следующими параметрами:
offset (укажите значение 0);file_size (укажите в качестве значения общий размер загружаемого видео в байтах).curl -X POST "https://rupload.facebook.com/video-upload/v24.0/video_id" \
-H "offset: 0" \
-H "file_size: file_size_in_bytes" \
--data-binary "@/path/to/file/my_video_file.mp4"
В случае успеха ваше приложение получит ответ JSON, в котором параметр success будет иметь значение true.
{
"success": true
} Если загрузка видео прерывается, вы можете продолжить или начать ее заново.
POST и задайте для параметра offset значение 0. POST, указав в параметре offset значение bytes_transfered из проверки статуса видео.Чтобы проверить статус видео во время загрузки или публикации, отправьте запрос GET к конечной точке /video_id и укажите следующий параметр:
fields (установите значение status).curl -X GET "https://graph.facebook.com/v24.0/video_id" \
-d "fields=status"
В случае успеха приложение получит ответ JSON с перечисленными далее объектами.
status, который содержит:
video_status со значением ready, processing, expired или error;uploading_phase со следующими парами "ключ-значение":
status со значением in_progress, not_started, complete или error;bytes_transfered, в котором указано, сколько байт было загружено (его можно использовать в параметре offset, если загрузка была прервана);processing_phase со следующими парами "ключ-значение":
status со значением in_progress, not_started, complete или error;processing_phase со следующими парами "ключ-значение":
status со значением in_progress, not_started, complete или error;publish_status со значением published или not_published;publish_time с меткой текущего времени или времени публикации (в формате UNIX).
В следующем ответе показано, что файл загружен.
{
"status": {
"video_status": "processing",
"uploading_phase": {
"status": "in_progress",
"bytes_transfered": 50002
},
"processing_phase": {
"status": "not_started"
}
"publishing_phase": {
"status": "not_started",
"publish_status": "published",
"publish_time": 234523452
}
}
}
|
В следующем ответе показано, что на этапе обработки произошла ошибка.
{
"status": {
"video_status": "processing",
"uploading_phase": {
"status": "complete"
},
"processing_phase": {
"status": "not_started",
"error": {
"message": "Resolution too low. Video must have a minimum resolution of 540p."
}
}
"publishing_phase": {
"status": "not_started"
}
}
}
|
Чтобы опубликовать видеоисторию на своей Странице, отправьте запрос POST к конечной точки /page_id/video_stories, указав следующие параметры:
video_id (укажите в качестве значения ID своего загруженного видео);upload_phase (укажите значение finish).curl -X POST "https://graph.facebook.com/v24.0/page_id/video_stories" \
-d '{
"video_id": "video_id",
"upload_phase": "finish"
}'
В случае успеха приложение получит ответ JSON, содержащий следующие пары "ключ-значение":
success со значением true;post_id с ID вашей опубликованной истории.{
"success": true,
"post_id": 1234
}
Чтобы узнать, как загрузить фото на серверы Meta с помощью конечной точки /page_id/photos, ознакомьтесь с руководством по публикации на Странице
. Не забудьте указать параметр published и установить для него значение false.
Чтобы опубликовать фотоисторию на своей Странице, отправьте запрос POST к конечной точке /page_id/photo_stories, указав следующие параметры:
photo_id (укажите в качестве значения ID своего загруженного фото).curl -X POST "https://graph.facebook.com/v24.0/page_id/photo_stories" \
-d '{
"photo_id": "photo_id"
}'
В случае успеха приложение получит ответ JSON, содержащий следующие пары "ключ-значение":
success со значением true;post_id с ID вашей опубликованной истории.{
"success": true,
"post_id": 1234
}
Чтобы получить список всех историй Страницы и данные о каждой истории, отправьте запрос GET к конечной точке /page_id/stories, подставив в качестве page_id ID нужной Страницы.
curl -i -X GET "https://graph.facebook.com/v24.0/page_id/stories"
В случае успеха приложение получит ответ JSON с массивом объектов, в котором каждый объект будет содержать информацию об опубликованной на Странице истории. Каждый объект содержит следующие пары "ключ-значение":
post_id с ID вашей опубликованной истории;status со значением PUBLISHED или ARCHIVED;creation_time с меткой времени публикации истории (в формате UNIX);media_type со значением video или photo;media_id с ID видео или фото в истории;url с URL Facebook, по которому размещена история, например https://facebook.com/stories/8283482737484972.{
"data": [
{
"post_id": "post_id",
"status": "PUBLISHED",
"creation_time": "123456",
"media_type": "video",
"media_id": "video_id",
"url": "https://facebook.com/stories…"
},
{
"post_id": "post_id",
"status": "PUBLISHED",
"creation_time": "123456",
"media_type": "photo",
"media_id": "photo_id",
"url": "https://facebook.com/stories…"
},
{
"post_id": "post_id",
"status": "ARCHIVED",
"creation_time": "123456",
"media_type": "photo",
"media_id": "photo_id",
"url": "https://facebook.com/stories…"
},
...
],
}
Истории можно фильтровать по статусу (опубликована или помещена в архив) и дате с помощью параметров since и until.
Ознакомьтесь с дополнительной информацией о конечных точках и понятиях, упоминаемых в этом руководстве.