← Volver a las soluciones
PluginPHPDe pago

WP Social Auth

Plugin de WordPress que añade acceso con VK, Yandex, Steam y Discord a los formularios de WordPress y WooCommerce. Un contrato de proveedor único, verificación OpenID 2.0 para Steam, una tabla de bloqueo frente a llamadas duplicadas y un formulario de datos para proveedores sin correo.

WP Social Auth

Stack

PHPWordPressWooCommerceOAuthOpenIDMySQL

El problema

Una tienda de videojuegos exigía registro antes de pagar. La audiencia ya tenía cuentas en VK, Yandex, Steam y Discord y ninguna gana de inventarse otra contraseña: una parte de cada sesión de compra terminaba justo en el formulario de registro. Los plugins de acceso social disponibles cubrían VK y Yandex, pero no Steam, que no habla OAuth en absoluto.

Un segundo problema, más silencioso, apareció en producción: la devolución de llamada de OAuth a veces se disparaba dos veces por un mismo acceso, un doble clic, un reintento, un navegador que precarga, y cada ejecución creaba su propia cuenta. Soporte acababa fusionando clientes duplicados a mano.

Antes → Después

AntesDespués
Formulario de registro con contraseña como única entradaCuatro proveedores de un clic junto al formulario normal
Steam imposible: usa OpenID 2.0, no OAuthSteam verificado contrastando la firma con el servidor de Valve
Cuentas duplicadas cuando la llamada llegaba dos vecesEl código se reserva en una tabla de bloqueo: la segunda sigue a la primera
Añadir un proveedor obligaba a bifurcar todo el flujo de accesoUn proveedor es un cliente, un servicio, un mapeador y una pestaña de ajustes
Los usuarios de Steam no tenían correo: no se podía completar el pedidoLos datos de contacto que faltan se piden en un formulario tras el acceso
Acceso unas veces por usuario y otras por correo, sin criterioAcceso solo por correo, con una regla de dominio en cada punto de entrada
Tras entrar, la caché mostraba la cabecera de invitadoLa caché privada se purga dentro del propio manejador de acceso

Cómo funciona

  1. El comprador elige un proveedor. Los botones se inyectan en los formularios de acceso y registro de WordPress y en los dos de WooCommerce, de modo que las mismas cuatro opciones aparecen allí donde ocurra un acceso.
  2. El proveedor responde. Los proveedores OAuth devuelven un código que se intercambia por un token de acceso y un perfil. Steam devuelve en su lugar una aserción OpenID firmada, que se reenvía a Valve para obtener un veredicto de check_authentication antes de confiar en nada.
  3. El código se reserva. Antes de tocar la cuenta, la llamada escribe el código en una tabla de bloqueo con contador. Una llamada duplicada encuentra la fila ocupada, espera a que termine la primera y reutiliza su resultado: un acceso, una cuenta, haga lo que haga el navegador.
  4. La cuenta se asocia o se crea. Se busca al cliente existente por correo o, cuando el proveedor no entrega correo, por nombre de acceso. Solo un fallo real crea un usuario nuevo de WordPress.
  5. Se completan los datos que faltan. Steam no entrega dirección de correo, así que esos usuarios pasan por un formulario de correo y teléfono antes de poder llegar al pago. El resto va directo a la página configurada.
  6. La sesión se abre limpia. Se fijan las cookies de autenticación, se dispara el evento estándar de acceso para que otros plugins lo vean y se purga la caché privada, de modo que la visita ve de inmediato una página de usuario autenticado.

Funciones clave

  • VK, Yandex, Steam y Discord tras una única interfaz de proveedor
  • Verificación de firma OpenID 2.0 para Steam e intercambio de código OAuth para el resto
  • Llamadas de retorno a prueba de concurrencia: la tabla de bloqueo evita duplicados
  • Formulario de datos posterior al registro para proveedores sin correo
  • Política de acceso solo por correo con restricción de dominio configurable
  • Pantalla de ajustes e interruptor independiente por proveedor
  • Purga de la caché privada de páginas al entrar (compatible con LiteSpeed)
  • Respuestas de proveedor grabadas en las pruebas: el flujo completo se prueba sin red

Instalación

  1. Suba la carpeta del plugin a /wp-content/plugins/ y actívelo
  2. Ejecute la migración incluida para crear la tabla de bloqueo de códigos
  3. Abra Awesome Auth en la barra lateral del admin y rellene el client id y el secreto de cada proveedor que quiera habilitar
  4. Defina la URL de redirección tras el acceso y la página del formulario de datos en los ajustes comunes
  5. Registre en la consola de desarrollador de cada red el redirect URI que muestra su pestaña

Disponible para colaboración por contrato

Estoy disponible para colaborar por contrato. Si tiene una idea de proyecto interesante, reserve una llamada por Calendly.

Agenda una llamada de 30 min