La extensión de Facebook para empresas (FBE) permite a tus usuarios subir activos de contenido fácilmente en la familia de aplicaciones de Meta mediante la conexión de un Business Manager nuevo o existente. Con el Business Manager devuelto después de completar este proceso, los socios pueden subir activos de contenido a Facebook en nombre de sus clientes:
En este documento se destacan los requisitos previos principales del proceso de contenido de FBE, junto con los pasos necesarios para completarlo. Consulta la guía de la extensión de Facebook para empresas para obtener detalles sobre las integraciones generales.
Ejemplo: proceso de incorporación desde la interfaz del socio (inicio de sesión empresarial)
Regístrate como desarrollador de Facebook para acceder a nuestras herramientas para desarrolladores y crear aplicaciones de Facebook.
Si aún no lo has hecho, crea una aplicación de Meta.
Un Business Manager que sea una empresa verificada debe ser el propietario de tu aplicación de Meta. Obtén más información sobre cómo verificar tu empresa.
Crea una aplicación de prueba y utilízala para completar los nuevos procesos de desarrollo y pruebas. Asegúrate de asignar un Business Manager diferente a la aplicación de prueba.
Permisos privados/función:
manage_business_extension
: acceso a la extensión de Facebook para empresas. Una vez que esta función se emita a tu aplicación, puedes buscar el panel para desarrolladores de FBE en Productos.
Business_creative_asset_management
: acceso a las API de administración de activos relacionados con el contenido. Una vez concedida esta función, puedes acceder a los siguientes permisos:
business_creative_insights
: accede a insights de activos de contenido del negocio.
business_creative_management
: permite a tu aplicación crear, editar y compartir carpetas nuevas, así como subir activos a dichas carpetas en el contexto de tu propia entidad empresarial.
business_creative_insights_share
(en desarrollo): permiso opcional utilizado en el proceso de compartir carpeta. Si el usuario lo concede, tu aplicación podrá compartir la carpeta de contenido con otras empresas y permitir que estas vean insights de activos de contenido.
Genera un identificador de acceso de socio:
Para generar un identificador de acceso de usuario del sistema en tu Business Manager, sigue estas instrucciones.
Asegúrate de que este identificador tenga los permisos business_creative_insights
, business_creative_management
y business_management
seleccionados en el paso de “ámbitos disponibles”.
Este botón se utiliza para enviar un activo a la biblioteca de Facebook Media del usuario desde tu aplicación. Durante este proceso, la aplicación deberá permitir que el usuario seleccione o cree una carpeta a la que enviar el activo.
Se recomiendan dos enfoques para llevar a cabo esta acción:
1. (Como mínimo) El usuario solo tiene la opción de elegir o crear un carpeta de nivel superior. En el contexto empresarial seleccionado, consulta todas las carpetas de nivel superior a las que el usuario tiene acceso. Pide al usuario que elija una carpeta de nivel superior existente o que cree una nueva. Los usuarios pueden especificar el nombre de la carpeta o utilizar el nombre de carpeta predeterminado <YourBusinessName>_<UserBusinessName>_<UserName>
. Sube activos a la carpeta de nivel superior nueva o seleccionada. Este enfoque requiere un trabajo mínimo de la IU. Los detalles de la API se pueden consultar en el paso 3 más abajo.
2. (Opcional) El usuario tiene control total sobre la navegación de carpetas y subcarpetas. En el contexto empresarial seleccionado, consulta todas las carpetas de nivel superior a las que el usuario tiene acceso y pídele que elija una carpeta de nivel superior existente o cree una nueva. En el caso de una carpeta nueva, pide al usuario que asigne un nombre a la carpeta o que utilice el nombre predeterminado <YourBusinessName>_<UserBusinessName>_<UserName>
. En la carpeta de nivel superior seleccionada, el usuario tiene la opción de navegar a una subcarpeta existente, de crear una subcarpeta nueva o de subir activos. Con esta opción, deberás implementar la navegación de carpetas en la IU. Las instrucciones de integración de la API se pueden consultar en el paso 3 y el paso 4 a continuación.
Los pasos específicos necesarios para implementar este proceso son los siguientes:
Cuando el usuario envía un activo de contenido a Facebook por primera vez, debes solicitar a la extensión de Facebook para empresas que pida al usuario que se autentique y que conceda a tu aplicación los permisos necesarios y acceso a los activos, en forma de identificadores de acceso, para poder acceder a sus datos en Facebook. Consulta Extensión de Facebook para empresas: Empezar para implementar la extensión de Facebook para empresas en tu aplicación. Sigue la guía de aplicaciones empresariales para permitir que tu aplicación se muestre en estas aplicaciones.
Para iniciar el proceso de contenido:
business_creative_management
y business_creative_insights
.
business_creative_insights_share
.
VIEW_INSIGHTS
.Con el identificador de acceso de usuario devuelto de esta invitación a compartir, puedes realizar llamadas a la API en nombre del usuario.
Campo | Tipo | Descripción |
---|---|---|
| Configuración | Obligatorio Configuración de Facebook del vendedor, por ejemplo, su identificador único ( |
| business_config | Obligatorio Objeto de configuración que utiliza la extensión de Facebook para empresas a fin de configurar el proceso de trabajo de dicha extensión. Consulta los detalles del objeto |
| Booleano | Obligatorio Establece este valor en |
Utiliza este objeto para definir la configuración para la presencia en Facebook del usuario final.
Campo | Descripción |
---|---|
| Obligatorio. |
| Obligatorio. |
| Obligatorio. |
| Obligatorio. |
| Obligatorio.
|
| Opcional. |
Utiliza este objeto para establecer la configuración empresarial para un usuario final. Incluye llamadas a la acción, una tarjeta de servicios, etc. Cada campo incluye un “tipo” vinculado a las tablas correspondientes que hay a continuación.
Campo | Descripción |
---|---|
| Obligatorio. |
Utiliza este objeto para configurar el nombre de las empresas.
Campo | Descripción |
---|---|
| Obligatorio. |
Cuando el usuario termine el proceso de incorporación de FBE anterior, recibirás el identificador de Business Manager y el identificador de acceso del usuario desde la API de instalación de FBE o la notificación de webhooks.
Los usuarios pueden subir activos a la carpeta de nivel superior o crear subcarpetas en dicha carpeta.
Primero, compruebas las carpetas de nivel superior en las que el usuario tiene permiso para realizar la tarea CREATE_CONTENT
. Para ello, realiza una solicitud al extremo <business_id>/creative_folders
(en desarrollo).
Solicitud
curl -X GET \ -F 'access_token={user-access-token}' \ https://graph.facebook.com/<API_VERSION>/<user_business_id>/creative_folders?filtering=[{field:"permitted_tasks", operator: "EQUAL", value:"create_content"}]
Respuesta
{ "id": "<folder_id>" }
Pide al usuario que elija una carpeta de nivel superior existente o que cree una nueva en el contexto del Business Manager del usuario. En el caso de una carpeta de nivel superior nueva, puedes pedir al usuario que asigne un nombre a la carpeta o utilizar <YourBusinessName>_<UserBusinessName>_<UserName>
de forma predeterminada. Si luego el usuario comparte la carpeta contigo, será visible para tu empresa y para la del usuario en la biblioteca de activos de Facebook.
Nota: El nombre de la empresa del usuario se puede obtener mediante una solicitud GET
al extremo {business-id}
, donde {business-id}
es el identificador de la empresa del usuario.
Solicitud
curl -X GET \ -F 'access_token={user-access-token}' \ https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>
Respuesta
{ "id": {business-id} "name": {user-business-name} }
Solicitud
curl -X POST \ -F "name={folder_name}" -F "description={description}" -F 'access_token={user-access-token}' \ https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/creative_folders
Respuesta
{ "id": {top-level-folder-id} }
Si quieres admitir el proceso de navegación de carpetas completo, pide al usuario que elija una subcarpeta existente o que cree una nueva en la carpeta de nivel superior con las solicitudes siguientes:
business_creative_management
Solicitud
curl -X GET \ -F 'access_token={user-access-token}' \ https://graph.facebook.com/<API_VERSION>/<parent_folder_id>/subfolders?fields=name
Respuesta
{ "data": [ { "name": "<subfolder_name>", "id": "<subfolder_id>" } ] }
business_creative_management
Solicitud
curl -X POST \ -F "name={folder_name}" -F "description={description}" -F "parent_folder_id={parent-folder-id}" -F 'access_token={user-access-token}' \ https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/creative_folders
Respuesta
{ "id": {sub-folder-id} }
Para eliminar la carpeta y la subcarpeta, puedes enviar una solicitud DELETE
al extremo <folder_id>
o <subfolder_id>
.
Sube activos de contenido del usuario a la subcarpeta.
business_creative_management
Solicitud
curl -X POST \ -F 'bytes={image-content-in-bytes-format}' \ -F 'name={image-name}' \ -F 'access_token={user-access-token}' \ -F 'creative_folder_id={subfolder-id}' \ https://graph.facebook.com/{version}/{business-id}/images
Respuesta
{ "images":{ "{image-name}":{ "id":"{business-creative-image-id}", "hash":"{hash}", "url":"{image-url}" } } }
Sube un vídeo en una solicitud única si tiene un tamaño de pocos megabytes. De lo contrario, súbelo en fragmentos (consulta la sección siguiente). Realiza la llamada a la API para subir vídeo en graph-video.facebook.com
en lugar de graph.facebook.com
.
Ejemplo: envía una solicitud POST
a {business-id}/video
e incluye el nombre del vídeo, el origen y el identificador de la subcarpeta.
Solicitud
curl -X POST \ -F 'name={video-name}' \ -F 'source='@{video-path}'' \ -F 'access_token={user-access-token}' \ -F 'creative_folder_id={subfolder-id}' \ https://graph-video.facebook.com/{version}/{business-id}/videos
Respuesta
{ "success": true, "business_video_id": "<business_video_id>" }
En el caso de vídeos de mayor tamaño, envía una solicitud de inicio, una o varias solicitudes de transferencia y una solicitud de finalización.
Para realizar una solicitud de inicio y crear una sesión de subida de vídeos, envía una solicitud POST
a /{business-id}/videos
, establece el campo upload_phase
para que se inicie y especifica el valor de file_size
en bytes
Solicitud
curl -X POST \ -F 'title={video-name}' \ -F 'creative_folder_id={subfolder-id}' \ -F 'access_token={user-access-token}' \ -F 'upload_phase=start' \ -F 'file_size={video_file_size_in_bytes}' \ https://graph-video.facebook.com/<API_VERSION>/<BUSINESS_ID>/videos
Respuesta
{ "upload_session_id": "{session-id}", "video_id": "{video-id}", "start_offset": "0", "end_offset": "52428800" }
Para subir el intervalo [0, 52428800] del vídeo, segmenta el archivo en fragmentos de acuerdo con los desfases inicial y final y, a continuación, envía los fragmentos con solicitudes de transferencia. Te enviamos nuevos desfases para cada fragmento. Utilízalos para subir cada uno de los fragmentos.
Ejemplo: envío del primer fragmento
Solicitud
curl -X POST \ -F 'title={video-name}' \ -F 'access_token={user-access-token}' \ -F 'creative_folder_id={subfolder-id}' \ -F 'upload_phase=transfer' \ -F 'upload_session_id={session-id}' \ -F 'start_offset=0' \ -F 'video_file_chunk=@{binary-chunk-filename}' \ https://graph-video.facebook.com/<API_VERSION>/<BUSINESS_ID>/videos
Respuesta
Si la operación se realiza correctamente, respondemos con los desfases del siguiente fragmento.
{ "start_offset": "52428800", //Start byte position of the next file chunk "end_offset": "104857601" //End byte position of the next file chunk }
Corta y sube el segundo fragmento con el intervalo [52428800, 104857601] del archivo y envíalo:
Solicitud
curl -X POST \ -F 'title={video-name}' \ -F 'access_token={user-access-token}' \ -F 'creative_folder_id={subfolder-id}' \ -F 'upload_phase=transfer' \ -F 'start_offset=52428801' \ -F 'upload_session_id={your-upload-sesson-id}' \ -F 'video_file_chunk={binary-chunk-filename}' \ https://graph-video.facebook.com/<API_VERSION>/<BUSINESS_ID>/videos
Respuesta
Envía todos los demás fragmentos hasta que el valor de start_offset
sea igual al de end_offset
:
{ "start_offset": "152043520", "end_offset": "152043520" }
La respuesta anterior significa que has subido todo el archivo. Ahora debes publicar el vídeo y cerrar la sesión de subida.
Solicitud
curl -X POST \ -F 'title={video-name}' \ -F 'access_token={user-access-token}' \ -F 'creative_folder_id={business-creative-folder-id}' \ -F 'upload_phase=finish' \ -F 'upload_session_id={session-id}' \ https://graph-video.facebook.com/<API_VERSION>/<BUSINESS_ID>/videos
Si recibes errores durante una subida, puedes volver a intentar subir el fragmento que se estaba procesando. Los errores suelen deberse a problemas de respuesta. Vuelve a intentar subir el fragmento que ha generado el error. Para obtener más información sobre los errores, consulta:
La aplicación debe notificar al usuario que la subida se ha llevado a cabo correctamente, y presentar un enlace profundo a este contenido detrás de una llamada a la acción “Ver contenido en mi biblioteca de activos de Facebook”. El enlace profundo de la carpeta o el activo es el siguiente:
https://business.facebook.com/asset_library/business_creatives/?object_id={asset_id or folder id}
(en desarrollo)
Este enlace dirige al usuario a la página de selección de empresa si este tiene varios Business Manager. Para eliminar la ambigüedad de la empresa, puedes proporcionar el contexto empresarial en la URL como se indica a continuación:
https://business.facebook.com/asset_library/business_creatives/?object_id={asset_id or folder id}&business_id={client_business_id}
La URL del enlace profundo también se puede obtener mediante una solicitud GET
en el extremo:
curl -X GET \ /<folder_id or asset_id> ?fields=['media_library_url'] &access_token=<user_access_token>
El enlace permite al usuario ir a la carpeta o al activo directamente en la biblioteca de activos de Facebook.
Puedes solicitar que la carpeta de nivel superior se comparta contigo si quieres administrar la carpeta o ver insights de los activos. Envía una solicitud POST
a: {business-creative-folder-id}/agencies
y asigna permitted_tasks
a CREATE_CONTENT
.
Nota: También puedes asignar la tarea permitida VIEW_INSIGHTS
si el usuario concede el permiso business_creative_insights_share
a tu aplicación (en desarrollo).
business_creative_management
Solicitud
curl -X POST \ -F 'permitted_tasks=['CREATE_CONTENT','VIEW_INSIGHTS']' \ -F 'business={partner-business-id} ' \ -F 'access_token={user-access-token}' https://graph.facebook.com/<API_VERSION>/<BUSINESS_CREATIVE_FOLDER_ID>/agencies
La respuesta puede ser de dos tipos según el rol del usuario en la organización empresarial:
La API establecerá un acuerdo de colaboración entre la empresa del usuario y la del cliente.
Respuesta
Si existe un acuerdo de colaboración formalizado entre la empresa del usuario y la tuya (la empresa del usuario ha compartido una carpeta contigo y has aceptado antes una solicitud para compartir):
{ "success": true }
Si todavía no has aceptado ninguna solicitud para compartir de la empresa del usuario:
{ "success": true, "share_status": "In Progress" }
En este escenario, tu empresa deberá aceptar la solicitud para compartir para poder acceder a todas las funciones habilitadas por el recurso compartido (ver, crear, etc).
Para enumerar todos los acuerdos de colaboración que están pendientes de aprobación, envía una solicitud a {business-id}/received_sharing_agreements
mediante el identificador de acceso del socio y establece request_status
en IN_PROGRESS
. Necesitas los permisos business_creative_management
y business_management
para llevar a cabo esta acción.
Enumerar todos los acuerdos de colaboración
Solicitud
curl -i -X GET https://graph.facebook.com/<API_VERSION>/<PARTNER_BUSINESS_ID>/received_sharing_agreements ?request_status=IN_PROGRESS &access_token={partner-access-token}"
Para aceptar una solicitud para compartir, puedes enviar una solicitud POST
a business_sharing_agreement_request_id
y establecer request_status
en APPROVE
. Solo tienes que realizar esta operación la primera vez que alguien comparte una carpeta con tu empresa. Necesitas el permiso business_management
para llevar a cabo esta acción:
Aceptar acuerdos de colaboración
Solicitud
curl -X POST \ -F 'request_status=APPROVE' \ -F 'access_token={partner-access-token}' \ https://graph.facebook.com/<API_VERSION>/<BUSINESS_SHARING_AGREEMENT_REQUEST_ID>
Respuesta
{ "success": true }
También puedes aprobar solicitudes para compartir pendientes en la IU de Business Manager. Para ver las solicitudes pendientes en Business Manager, dirígete a Configuración > Solicitudes > Solicitudes recibidas, donde puedes ver más información sobre la solicitud.
La API activa un proceso de trabajo de notificación para enviar una notificación por correo electrónico a los administradores del negocio para que aprueben la solicitud.
Respuesta
{ "success": true, "share_status": "Pending" }
En respuesta a este estado, tu aplicación debe notificar al usuario las acciones siguientes:
Para enumerar todos los acuerdos pendientes que se han iniciado en la empresa del usuario, envía una solicitud a {business-id}/attempted_sharing_agreements
, y establece request_status
en IN_PROGRESS
y requesting_business_id
en el identificador de Business Manager del usuario. Necesitas los permisos business_creative_management
y business_management
para llevar a cabo esta acción.
Enumerar todos los acuerdos para compartir carpetas pendientes
Solicitud
curl -i -X GET \ https://graph.facebook.com/<API_VERSION>/<PARTNER_BUSINESS_ID>/attempted_sharing_agreements ?request_status=IN_PROGRESS &requesting_business_id=<user_business_id> &access_token={partner-access-token}
Enumerar todos los acuerdos para compartir carpetas pendientes con el identificador de la solicitud
Asimismo, si tienes el identificador de la solicitud, puedes enviar una solicitud a {request_id}
para obtener el estado directamente.
business_creative_management
Solicitud
curl -i -X GET \ https://graph.facebook.com/<API_VERSION>/<REQUEST_ID>?fields=status
Cuando un administrador del negocio aprueba la solicitud, el estado cambia a APPROVE
y la carpeta se comparte con tu Business Manager si la empresa del usuario y la tuya han formalizado un acuerdo (la empresa del usuario ha compartido una carpeta contigo y tú has aceptado antes una solicitud para compartir). De lo contrario, el valor de share_status
se actualiza a IN_PROGRESS
. Puedes enumerar todos los acuerdos de colaboración con el estado IN_PROGRESS
y aceptarlos a través de la API o en la IU de Business Manager.
Cuando el usuario comparte una carpeta contigo con el permiso para realizar la tarea VIEW_INSIGHTS
, puedes leer insights de imágenes y vídeos de la empresa en la carpeta compartida mediante una solicitud GET
en el extremo <business_asset_id>/insights
.
business_creative_management
y business_creative_insights
.Solicitud
curl -i -X GET \ https://graph.facebook.com/<API_VERSION>/<BUSINESS_ASSET_ID>/insights ?breakdowns=["age","gender"] &fields=impressions,inline_link_clicks,age,gender,date_start, &time_range={"since":"2019-08-01","until":"2019-08-22"} &access_token={partner-access-token}"
Respuesta
{ "data": [ { "impressions": 99, "inline_link_clicks": 1, "age": "18-24", "gender": "female", "date_start": "2019-08-01", "date_end": "2019-08-22" }, { "impressions": 198, "inline_link_clicks": 2, "age": "18-24", "gender": "male", "date_start": "2019-08-01", "date_end": "2019-08-22" }, { "impressions": 464, "inline_link_clicks": 2, "age": "25-34", "gender": "female", "date_start": "2019-08-01", "date_end": "2019-08-22" }, ] }
El desglose se puede realizar por:
gender
age
country
publisher_platform
platform_position
device_platform
ad_id
objective
optimization_goal
time_range
(requiere una fecha con el formato “AAAA-MM-DD”, es decir a partir de la medianoche del día indicado).Para los socios de servicios administrados, puedes administrar la carpeta de nivel superior con un identificador de acceso de socio si la carpeta se ha compartido contigo con permisos para las tareas adecuadas, que te permiten:
CREATE_CONTENT
en la carpeta, que permite a tu aplicación crear subcarpetas y subir imágenes y vídeos a la carpeta.VIEW_INSIGHTS
, que tu aplicación puede utilizar para ver insights de rendimiento de todos los activos de contenido almacenados en la carpeta.Llama al extremo <business_id>/creative_folders
para obtener todas las carpetas principales que se han compartido contigo en la empresa del usuario.
business_creative_management
Obtener carpetas de la empresa del usuario
Solicitud
curl -X GET \ -F 'access_token={partner-access-token}' \ https://graph.facebook.com/<API_VERSION>/<partner_business_id>/creative_folders?filtering=[{field:"owner_business_id", operator:"EQUAL", value:"user_business_id"}]
Respuesta
{ "data": [ { "id": "<shared_folder_id>" } ] }
Obtener las tareas permitidas que tienes en la carpeta
Solicitud
curl -X GET \ -F 'access_token={partner-access-token}' \ https://graph.facebook.com/<API_VERSION>/<folder_id>/agencies
Respuesta
{ "data": [ { "id": "<partner_business_id>", "name": "<partner business name>", "permitted_tasks": [ "VIEW_INSIGHTS", "VIEW_CONTENT", "CREATE_CONTENT", "MANAGE_CONTENT", "MANAGE_PERMISSIONS"] } ], }
CREATE_CONTENT
es necesario para subir imágenes y vídeos en una carpeta compartida.VIEW_INSIGHTS
es necesario para consultar insights de contenido de imágenes o vídeos en una carpeta compartida.Con el permiso para la tarea CREATE_CONTENT
en la carpeta principal, puedes crear una subcarpeta en una carpeta compartida.
business_creative_management
Crear una subcarpeta
Solicitud
curl -X POST \ -F "name={folder_name}" -F "description={description}" -F "parent_folder_id={parent-folder-id}" -F 'access_token={partner-access-token}' \ https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/creative_folders
Respuesta
{ "id": {subfolder-id} }
Sigue los mismos pasos indicados en el paso 5. Sube imágenes y vídeos a la subcarpeta con el identificador del socio.
Si la aplicación sube una imagen o un vídeo a la biblioteca de activos de Facebook, la API de Facebook devolverá un identificador para ese activo.
Para facilitar la continuidad, la aplicación deberá realizar un seguimiento del identificador del activo en el proyecto o el área de trabajo que produjo la imagen o el vídeo en la aplicación.
De este modo, se permitirán casos de uso de “edición” y “actualización” simplificados, que se admitirán en el futuro, como, por ejemplo, los siguientes:
media_library_url
del activo de imagen o vídeo subidoSolicitud
curl -X GET \ -F 'access_token={partner-access-token}' \ https://graph.facebook.com/<API_VERSION>/<asset_id>?fields=media_library_url
&action=CREATE_AD
o &action=CREATE_POST
al final del enlace profundo del paso anterior.Ejemplo:
https://business.facebook.com/asset_library/business_creatives/?object_id=2838437832929622&action=CREATE_AD