javascript - SDK de JS de Facebook - Inicio de sesión empresarial (SUAT)
El SDK de JS de inicio de sesión de Facebook proporcionado funciona con el flujo de Inicio de sesión de usuario (Token de acceso de usuario, también conocido como UAT) a través de "Inicio de sesión de Facebook para empresas" pero no para el Inicio de sesión de empresa (Token de acceso de usuario del sistema, también conocido como SUAT).
Configuración de inicio de sesión de Facebook para negocios
Actualmente usamos el flujo de inicio de sesión con User Access Token ya que abre con éxito la ventana emergente de inicio de sesión de Facebook y devuelve el token de acceso después de autenticar y autorizar correctamente. Sin embargo, queremos usar el System-user Access Token para utilizar un token que no caduque y también adjuntar el token al negocio en lugar del usuario.
Intenté seguir la documentación a continuación, pero sin éxito.
Inicio de sesión de Facebook para negocios - Invocar un cuadro de diálogo de inicio de sesión
Este código se utiliza en una aplicación Angular, pero pude usar el SDK sin problemas.
Flujo de Usuario en Funcionamiento (UAT)
Este flujo utiliza el ID de configuración de UAT. Esto utiliza tu perfil de FB conectado a una cuenta de negocio. El diálogo de inicio de sesión funciona bien, y puedo completar el flujo y obtener el token necesario para intercambiarlo con nuestro servidor back-end.
<!-- FB SDK in index.html -->
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js"></script>
...
FB.init({
appId: [Facebook App ID],
version: 'v15.0',
cookie: true,
});
...
FB.login(async (response: StatusResponse) => {
// login logic goes here...
}, {
config_id: [User Login config ID],
auth_type: 'reauthenticate' // "rerequest" & "reauthorize" works as well...
}
Ventana emergente de inicio de sesión de Facebook funcional
Flujo de Negocios No Funcional (SUAT)
Sin embargo, cuando intentamos usar el ID de configuración SUAT, el inicio de sesión falla de dos maneras diferentes. El primer ejemplo muestra el mensaje de error después de autenticarse correctamente con Facebook.
FB.login(async (response: StatusResponse) => {
// login logic goes here...
}, {
config_id: [Business Login config ID],
auth_type: 'reauthenticate' // "rerequest" & "reauthorize" will also give the same error page.
}
Facebook - "Parece que esta aplicación no está disponible".
Luego, cuando intentamos usar auth_type code como se menciona en su documentación, la ventana emergente de inicio de sesión de FB se rompe por completo con un mensaje diferente. Aunque auth_type code se menciona específicamente en su documentación, me pareció raro que el repositorio Definitely Typed para Facebook JS SDK no tuviera code como parte de sus opciones. Así que agregué manualmente 'code' a las opciones de auth_type.
FB.login(async (response: StatusResponse) => {
// login logic goes here...
}, {
config_id: [Business Login config ID],
auth_type: 'code',
override_default_response_type: true,
}
Facebook - "Lo sentimos, algo salió mal."
Todos los alcances definidos en ambas configuraciones han sido aprobados para permisos avanzados. He probado muchas configuraciones diferentes de los ajustes mencionados anteriormente (versiones de API, tipos de autenticación, etc.), pero solo las configuraciones de UAT parecen funcionar para el SDK de JS de FB.
He notado que ha habido muchos más resultados de búsqueda sobre este problema en los últimos meses. Hemos estado lidiando con este problema desde enero de 2023. ¡Si alguien tiene una solución alternativa o sugerencias, sería muy apreciado!