Un enfoque que funciona en 2019
Hace poco intenté lograr algo similar (al caso de uso descrito en este hilo), pero quería asegurarme de respetar las políticas actuales de Facebook, así que investigué un poco y aquí estoy compartiendo lo que encontré.
Mi caso de uso
Entonces, como ya dije, mi caso de uso es muy similar al que se describe aquí; es decir:
- Estoy trabajando para un distrito escolar.
- Están utilizando una herramienta de software para administrar prácticamente todo lo relacionado con el transporte escolar.
- Esa herramienta les permite enviar notificaciones por correo electrónico (a los suscriptores) cuando publican alertas de retraso del autobús y alertas de cierre de escuelas.
- Mucha gente en la comunidad sigue a la organización en su página de Facebook, y ese es el único lugar donde buscan esas alertas.
- Entonces, un empleado de la organización tiene que publicar manualmente cada notificación en la página de Facebook (además de crearla en el software de transporte). Además, esas notificaciones finalmente caducan (o simplemente se eliminan antes de que caduquen), por lo que el empleado tiene que volver más tarde para eliminarlas manualmente también.
- Es una pérdida de tiempo, por lo que lo que estamos tratando de hacer aquí es desarrollar un sistema simple que periódicamente sondee la base de datos de la herramienta de software en busca de notificaciones nuevas (y vencidas) y las actualice (es decir, agregue y elimine) en la página de Facebook.
Este es, en mi opinión, un caso de uso legítimo, pero no estaba seguro de cómo implementarlo de una manera que esté en línea con las políticas de Facebook.
La respuesta aceptada
Seguí los pasos de la respuesta aceptada y funcionó, excepto que las cosas parecen haber cambiado: ahora, aunque el token de página generado no caduca, access to data
caduca después de unos 60 días. También verá eso si sigue el procedimiento e inspecciona el token de la página en la herramienta FB Token Debugger Tool .
Además, el hecho de que los tokens de página generados estén vinculados a la cuenta de usuario también es lamentable, porque si el usuario actualiza su contraseña, el token de página también se invalida.
Cómo hacerlo en 2019
Después de varias horas de investigación, me encontré con el siguiente artículo de documentación de Facebook: Business Login for Direct Businesses .
Resulta que ahora es posible, siguiendo los pasos descritos en el artículo anterior, generar un token de página que no está asociado a ninguna cuenta de usuario de Facebook en particular y que no caducará (a menos que se elimine la aplicación FB o el token de la aplicación subyacente se elimina, ya sabes ...)
Así que aquí están los pasos y las partes más importantes:
- Necesita una cuenta de Business Manager .
- Se requerirá verificación y se deberá firmar un contrato digital.
- Necesita agregar la página de Facebook de destino a esa cuenta.
- Necesita crear una aplicación de Facebook y transferir esa aplicación a la misma cuenta de Business Manager.
- La aplicación deberá pasar por el proceso de revisión de Facebook, porque se necesitarán los siguientes permisos:
manage_pages
y publish_pages
.
- Nota importante Para que las publicaciones realizadas con el token de generación de página sean visibles para otros usuarios que no sean los administradores de la aplicación, esa aplicación deberá haber sido publicada y aprobada.
- Aún puede experimentar con el concepto sin enviarlo a revisión, pero las publicaciones no serán visibles públicamente.
- En la cuenta de Business Manager (solo después de que su aplicación y página se hayan agregado a la cuenta), debe crear lo que se llama un usuario del sistema y otorgarle a ese usuario el rol de administrador (o permisos) en la página de Facebook de destino.
- Un usuario del sistema es propiedad de la cuenta de Business Manager y no está vinculado a un usuario específico. Mi conocimiento actual es que un caso de uso importante para un usuario del sistema es el acceso programático a la API Graph de Facebook (justo lo que necesitamos).
- Luego, para ese usuario del sistema, debe generar un token de acceso (que nunca caducará). Se le pedirá que seleccione para qué aplicación. Luego, seleccionará su aplicación de destino.
- Luego, deberá usar el token de la aplicación generado para generar un token de página, que tampoco caducará nunca. El procedimiento se describe en este artículo como:
GET /<PAGE_ID>?fields=access_token&access_token=<SYSTEM_USER_ACCESS_TOKEN>
Ese token nunca caducará y no estará vinculado a un usuario de Facebook en particular, ¡así que es exactamente lo que necesitamos!
La última parte es asegurarse de que Facebook apruebe su aplicación de Facebook. De hecho, es la parte más importante, porque todo el procedimiento es inútil si la gente no ve nuestras publicaciones.
Quería estar seguro de que podía confiar en el procedimiento anterior para crear algo para mi cliente sin que Facebook lo rechazara al final, así que, de antemano (es decir, antes de comenzar a trabajar en el proyecto de mi cliente), pasé por todo el proceso de creando una página, una aplicación, una cuenta de Business Manager, etc. Verifiqué mi negocio. Envié mi aplicación para su revisión. En mi solicitud, fui muy específico sobre mi caso de uso y enfaticé que la aplicación era para "uso propio" (es decir, que la organización está desarrollando una aplicación para sí misma, no para otros usuarios de Facebook). Me aprobaron en menos de 24 horas.
Algunas otras notas sobre el proceso de revisión de la aplicación:
- Tuve que seleccionar una plataforma para la aplicación, así que seleccioné el sitio web .
- Tuve que indicar por qué la aplicación necesitaba los dos permisos y cómo los iba a usar.
- Tuve que indicar por qué el revisor no podría iniciar sesión en mi aplicación y probarla (es decir, porque la aplicación será utilizada por un proceso de trabajo).
- Para los screencasts obligatorios, simplemente presenté operaciones manuales en el terminal usando la
curl
utilidad (para generar el token de la página y hacer publicaciones en la página de Facebook). También mostré cómo estaba usando Business Manager para vincular al usuario del sistema a la página y generar un token, y así sucesivamente.
- Una vez más, fui muy específico sobre mi caso de uso, y creo que eso ayudó.
Espero que esta información sea útil para personas con casos de uso similares.