В этом документе рассказывается, как использовать Facebook Stories API для публикации историй на Страницах Facebook.
Чтобы опубликовать историю, нужно выполнить следующие действия:
Это руководство написано с расчетом, что вы ознакомились с обзором Pages API и реализовали необходимые компоненты, а также ознакомились с руководством по началу работы.
Вам потребуется реализовать вход через Facebook или вход через Facebook для компаний, чтобы запрашивать у пользователей приложения разрешения, необходимые для доступа к их Страницам Facebook и получения маркеров доступа к Странице.
Пользователям вашего приложения потребуется возможность выполнять действие 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/v21.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/v21.0
/video_id",
}
Если вы инициализировали сеанс загрузки видео и получили URL для загрузки, можно загружать видео. Вы можете загрузить:
Чтобы загрузить файл, размещенный в открытом доступе, отправьте запрос POST
к конечной точке upload_url
, полученной на этапе инициализации, со следующими параметрами:
file_url
(укажите в качестве значения URL вашего видеофайла).
curl -X POST "https://rupload.facebook.com/video-upload/v21.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/v21.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/v21.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/v21.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/v21.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/v21.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
.
Ознакомьтесь с дополнительной информацией о конечных точках и понятиях, упоминаемых в этом руководстве.