Estimado Chantuer Ruer:
El error invalid_grant normalmente indica que el código de autorización o el code_verifier de PKCE no es válido o ha caducado. Si el mensaje completo contiene AADSTS50148 o AADSTS501481, Microsoft lo identifica específicamente como una falta de coincidencia entre el code_verifier y el code_challenge.
Si la aplicación utiliza Microsoft Entra ID, le recomiendo revisar lo siguiente:
Genere un solo code_verifier para cada intento de inicio de sesión y conserve exactamente ese valor hasta canjear el código de autorización por los tokens. No genere otro antes de llamar al punto de conexión /token.
Cree el code_challenge a partir de ese verificador mediante SHA-256 y codificación Base64 URL, y envíe code_challenge_method=S256 en la solicitud de autorización.
Envíe el code_verifier original, sin modificar, en la solicitud del token. Compruebe que no se haya codificado en Base64, recortado, convertido a otra codificación de caracteres o codificado dos veces como URL.
Confirme que el redirect_uri de la solicitud del token sea exactamente el mismo que se utilizó para obtener el código de autorización.
Inicie una solicitud de autorización completamente nueva antes de volver a probar. Los códigos de autorización tienen una duración corta y solo pueden utilizarse una vez; reutilizar el mismo código también puede provocar invalid_grant.
Para una aplicación de escritorio de Windows, Microsoft recomienda utilizar una biblioteca de autenticación compatible, como MSAL, en lugar de implementar manualmente el intercambio OAuth y PKCE. MSAL genera y administra los valores de PKCE. Una aplicación de escritorio es un cliente público, por lo que no debe incluirse un secreto de cliente dentro de la aplicación.
Si ya utilizan MSAL, no generen ni sustituyan los parámetros PKCE por separado. En ese caso, sería necesario revisar la respuesta completa del error y el código que inicia y completa la autenticación para comprobar si los valores se pierden o se mezclan entre varios intentos simultáneos.
¿Podría compartir la siguiente información?
El error_description completo, incluido el número AADSTS
El lenguaje de programación y la biblioteca de autenticación, junto con su versión
Si utilizan MSAL o solicitudes OAuth creadas manualmente
El identificador de seguimiento, el identificador de correlación y la marca de tiempo
Si pueden ejecutarse varios intentos de inicio de sesión al mismo tiempo
Por seguridad, no publique códigos de autorización, tokens de acceso o actualización, secretos de cliente ni el valor real del code_verifier.
📘 Microsoft: flujo de código de autorización OAuth 2.0
📘 Microsoft: códigos de error de autenticación y autorización
Si esta respuesta le ha resultado útil, agradecería un Me gusta. Si el problema se ha resuelto, márquela como Respuesta aceptada para que otras personas puedan encontrarla más fácilmente.