En este documento, te mostramos cómo usar la API de Facebook Stories para publicar historias en páginas de Facebook.
Para publicar una historia, tu app deberá seguir estos pasos:
En esta guía, se asume que leíste la información general sobre la API de páginas, implementaste los componentes necesarios y completaste correctamente la guía de primeros pasos.
CREATE_CONTENT en la página que se muestra en el token de acceso a la página y otorgar a tu app los siguientes permisos:
pages_manage_postspages_read_engagementpages_show_listSi utilizas un usuario del sistema comercial en tus solicitudes a la API, es necesario que también cuentes con el permiso business_management.
Debes proporcionar una foto o un video que cumpla con las siguientes especificaciones.
| Propiedad | Especificación |
|---|---|
Tipo de archivo | .jpeg, .bmp, .png, .gif, .tiff |
Tamaño de archivo | Los archivos no pueden superar los 4 MB. En el caso de los archivos .png, recomendamos que el tamaño no sea superior a 1 MB, ya que la imagen se puede pixelar. |
| Propiedad | Especificación | ||
|---|---|---|---|
Tipo de archivo | .mp4 (recomendado). | ||
Relación de aspecto | 9 x 16. | ||
Resolución | 1080 x 1920 píxeles (recomendada). La mínima es de 540 x 960 píxeles. | ||
Velocidad de fotogramas | De 24 a 60 fotogramas por segundo. | ||
Duración | De 3 a 90 segundos. Un reel publicado como historia en una página de Facebook no puede superar los 60 segundos. | ||
Configuración de video |
| ||
Configuración de audio |
|
GET para ver una lista de tus historias, debes activar tu archivo de historias de Facebook 
Al probar una llamada a la API, puedes incluir el parámetro access_token configurado en tu token de acceso. Sin embargo, para hacer llamadas seguras desde tu app, usa la clase de token de acceso.
Se modificó el formato de los ejemplos de códigos que se incluyen en este documento a fin de facilitar la lectura. Reemplaza los valores en negrita y cursiva, como page_id, por tus propios valores.
Si deseas publicar una historia de video en una página de Facebook, deberás inicializar una sesión para subir un video a los servidores de Meta, subirlo allí y, luego, publicar la historia.
A fin de inicializar una sesión para subir contenido, envía una solicitud POST al punto de conexión /page_id/video_stories, donde page_id es el identificador de tu página de Facebook, con el parámetro upload_phase configurado en start.
curl -X POST "https://graph.facebook.com/v25.0/page_id/video_stories" \
-d '{
"upload_phase":"start",
}'
Si la solicitud se procesa correctamente, tu app recibe una respuesta JSON con el identificador del video y la URL de Facebook donde subirás el video.
{
"video_id": "video_id",
"upload_url": "https://rupload.facebook.com/video-upload/v25.0/video_id",
} Ahora que inicializaste una sesión para subir contenido y recibiste la URL, puedes subir el video. Tienes dos opciones:
Para subir un archivo alojado, envía una solicitud POST al punto de conexión upload_url que recibiste en el paso de inicialización e incluye los siguientes parámetros:
file_url configurado en la URL de tu archivo de video.Asegúrate de que el host sea rupload.facebook.com.
La API ahora rechaza los archivos de sitios que restringen el acceso mediante robots.txt. Los desarrolladores deben asegurarse de que el sitio de alojamiento permita que el agente de usuario “facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)” busque el archivo alojado.
Se rechazarán los archivos alojados en la red de distribución de contenido Meta CDN (por ejemplo, las URL fbcdn). En su lugar, los desarrolladores pueden usar la función de publicación cruzada para publicar un video en varias páginas sin necesidad de subirlo en cada una por separado. Consulta nuestra guía detallada sobre publicación cruzada.
curl -X POST "https://rupload.facebook.com/video-upload/v25.0/video_id" \
-H "file_url: https://some.cdn.url/video.mp4"
Para subir un archivo local, envía una solicitud POST al punto de conexión upload_url que recibiste en el paso de inicialización e incluye los siguientes parámetros:
offset configurado en 0.file_size configurado en el tamaño total en bytes del video que se está subiendo.
curl -X POST "https://rupload.facebook.com/video-upload/v25.0/video_id" \
-H "offset: 0" \
-H "file_size: file_size_in_bytes" \
--data-binary "@/path/to/file/my_video_file.mp4"
Si se sube correctamente, tu app recibirá una respuesta JSON con success configurado en true.
{
"success": true
} Si se interrumpe la subida del video, puedes reiniciarla o reanudarla.
POST y configura offset en 0. POST con offset configurado en el valor bytes_transfered de una comprobación de estado.Para comprobar el estado del video, envía una solicitud GET al punto de conexión /video_id mientras se sube o publica con el siguiente parámetro:
fields configurado en status.
curl -X GET "https://graph.facebook.com/v25.0/video_id" \
-d "fields=status"
Si la operación se completa correctamente, la app recibe una respuesta JSON que incluye lo siguiente:
status que contiene:
video_status con un valor de ready, processing, expired o error.uploading_phase con los siguientes pares clave-valor:
status configurado en in_progress, not_started, complete o error.bytes_transfered configurado en los bytes que se subieron. Se puede usar como el valor de offset si se interrumpe la subida.processing_phase con los siguientes pares clave-valor:
status configurado en in_progress, not_started, complete o error.processing_phase con los siguientes pares clave-valor:
status configurado en in_progress, not_started, complete o error.publish_status configurado en published o not_published.publish_time configurado en una marca de tiempo UNIX de la hora real o publicada.
En la siguiente respuesta, se muestra un archivo que se subió correctamente.
{
"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
}
}
}
|
En la siguiente respuesta, se muestra un error que se produjo en la fase de procesamiento.
{
"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"
}
}
}
|
Para publicar la historia de video en tu página, debes enviar una solicitud POST al punto de conexión /page_id/video_stories con los siguientes parámetros:
video_id configurado en el identificador del video que subiste.upload_phase configurado en finish.
curl -X POST "https://graph.facebook.com/v25.0/page_id/video_stories" \
-d '{
"video_id": "video_id",
"upload_phase": "finish"
}'
Si la operación se completa correctamente, la app recibe una respuesta JSON que incluye los siguientes pares clave-valor:
success configurado en true.post_id configurado en el identificador de la publicación de tu historia.
{
"success": true,
"post_id": 1234
}
Visita la referencia de publicaciones de la página
para obtener información sobre cómo subir una foto a los servidores de Meta mediante el punto de conexión /page_id/photos. Asegúrate de incluir el parámetro published configurado en false.
Para publicar la historia de foto en tu página, debes enviar una solicitud POST al punto de conexión /page_id/photo_stories con los siguientes parámetros:
photo_id configurado en el identificador de la foto que subiste.
curl -X POST "https://graph.facebook.com/v25.0/page_id/photo_stories" \
-d '{
"photo_id": "photo_id"
}'
Si la operación se completa correctamente, la app recibe una respuesta JSON que incluye los siguientes pares clave-valor:
success configurado en true.post_id configurado en el identificador de la publicación de tu historia.
{
"success": true,
"post_id": 1234
}
Para obtener una lista de todas las historias de una página y datos referidos a las historias, envía una solicitud GET al punto de conexión /page_id/stories, donde page_id es el identificador de la página que quieres ver.
curl -i -X GET "https://graph.facebook.com/v25.0/page_id/stories"
Si la solicitud se procesa correctamente, tu app recibe una respuesta JSON con una matriz de objetos en la que cada uno contiene información sobre una historia publicada en la página. Cada objeto incluye los siguientes pares clave-valor:
post_id configurado en el identificador de la historia publicada.status configurado en PUBLISHED y ARCHIVED.creation_time configurada en la marca de tiempo UNIX de cuando se publicó la historia.media_type configurado en video o photo.media_id configurado en el identificador del video o de la foto de la publicación de la historia.url configurada en la URL de Facebook de la publicación de la historia, como 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…"
},
...
],
}
Puedes filtrar las historias por estado (publicadas o archivadas) o por fecha mediante los parámetros since y until.
Obtén más información sobre los puntos de conexión y los conceptos analizados en esta guía.