# Cómo crear un inicio de sesión en mi aplicación front-end a un sitio Discourse específico?

**URL:** https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892
**Category:** Development
**Created:** [14 Diciembre, 2022 07:52 UTC](https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892 "2022-12-14T07:52:27Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![Roie\_Natan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roie_natan/32/245173_2.png) [@Roie\_Natan](https://meta.discourse.org/u/Roie_Natan)
#### Post date: [14 Diciembre, 2022 07:52 UTC](https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892/1 "2022-12-14T07:52:27Z")

</div>

Hola,  
Estoy intentando crear un proceso de inicio de sesión para Discourse desde mi aplicación de front-end. ¿Cómo debería hacerlo?

Gracias 🙏

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [14 Diciembre, 2022 10:16 UTC](https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892/2 "2022-12-14T10:16:36Z")

</div>

Esta es la solución habitual:

> [@Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)](https://meta.discourse.org/t/setup-discourseconnect-official-single-sign-on-for-discourse-sso/13045?u=merefield):
>
> [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) is a core Discourse feature that allows you to configure “Single Sign-On (SSO)” to completely outsource all user registration and login from Discourse to another site. Offered to our [pro, business and enterprise hosting customers](https://discourse.org/pricing). information_source (Feb 2021) ‘[Discourse SSO](https://meta.discourse.org/t/13045?silent=true)’ is now ‘[DiscourseConnect](https://meta.discourse.org/t/13045?silent=true)’. If you are running an old version of Discourse, the settings below will be named sso\_... rather than discourse\_connect\_... The Problem Many sites wishing to integrate wit…

Si solo gestionas usuarios en Discourse, ¡un botón de redirección es probablemente más fácil!

---

<div class="post-metadata">

### Author: ![Roie\_Natan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roie_natan/32/245173_2.png) [@Roie\_Natan](https://meta.discourse.org/u/Roie_Natan)
#### Post date: [14 Diciembre, 2022 11:14 UTC](https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892/3 "2022-12-14T11:14:39Z")

</div>

¡Gracias por tu respuesta! pero ¿puedo abrir un tipo de iframe para que puedan elegir cómo autenticarse?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [14 Diciembre, 2022 11:18 UTC](https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892/4 "2022-12-14T11:18:24Z")

</div>

No, los iframes no son compatibles.

O bien quieres administrar cuentas de usuario en tu sitio principal y luego autenticarte con [Discourse Connect](https://meta.discourse.org/t/13045?silent=true), o simplemente tener un enlace a tu Discourse.

¿Podrías enlazar a la ruta de inicio de sesión para que se les solicite de inmediato? `/login`

---

<div class="post-metadata">

### Author: ![Roie\_Natan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roie_natan/32/245173_2.png) [@Roie\_Natan](https://meta.discourse.org/u/Roie_Natan)
#### Post date: [14 Diciembre, 2022 11:21 UTC](https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892/5 "2022-12-14T11:21:45Z")

</div>

No puedo entender realmente cómo usar esto. Quiero decir, me imagino algo como un botón de inicio de sesión en mi sitio web, luego el usuario necesita elegir cómo ser autenticado, ¿verdad? Quiero decir, ¿cuál es el flujo posible para este escenario?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [14 Diciembre, 2022 11:29 UTC](https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892/6 "2022-12-14T11:29:33Z")

</div>

¿Por qué necesitas que inicien sesión en tu sitio web? ¿Estás gestionando cuentas de usuario allí?

---

<div class="post-metadata">

### Author: ![Roie\_Natan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roie_natan/32/245173_2.png) [@Roie\_Natan](https://meta.discourse.org/u/Roie_Natan)
#### Post date: [14 Diciembre, 2022 11:40 UTC](https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892/7 "2022-12-14T11:40:17Z")

</div>

Quiero poder crear publicaciones/temas desde mi front end, así que necesito que primero estén autenticados. ¿Tiene sentido?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [14 Diciembre, 2022 11:45 UTC](https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892/8 "2022-12-14T11:45:58Z")

</div>

OK, tiene algo de sentido. Esencialmente, ¿estás diciendo: “Quiero reescribir partes de la interfaz de usuario y comunicarme solo a través de la API”?

No creo que obtengas mucho soporte gratuito para ayudarte a hacer eso aquí, pero échale un vistazo a:

[https://meta.discourse.org/t/help-with-authenticating-user-via-api/178355/2?u=merefield](https://meta.discourse.org/t/help-with-authenticating-user-via-api/178355/2?u=merefield)

Existen esfuerzos para hacer esto, particularmente a través de aplicaciones, podrías investigarlos, por ejemplo:

> [@Lexicon: a customizable native mobile app for your Discourse site](https://meta.discourse.org/t/lexicon-a-customizable-native-mobile-app-for-your-discourse-site/201085):
>
> Hey everyone, I wanted to quickly drop in here and mention that I’ve just open-sourced a project called [Lexicon](https://lexicon.is) with some colleagues of mine. It’s a pre-built, customizable native mobile app built on top of the Discourse API. We built it to help quickly integrate discussion and messaging features into other native mobile projects. This project was really enjoyable to build, primarily due to all of the hard work done in advance by the Discourse core team and community over the years. Screensh…

También existía Fig, pero aún no es de código abierto:

> [@Fig - Native Discourse client for iOS](https://meta.discourse.org/t/fig-native-discourse-client-for-ios/148352/107?u=merefield):
>
> Why not just put it on GitHub and call it a day?

Pero ten en cuenta el nivel extremadamente alto de desarrollo inicial y mantenimiento que requieren este tipo de soluciones. Creo que los dos mejores ejemplos han sido abandonados (¿?).

Alternativamente, considera construir tu sitio web como una instancia de Discourse por completo (a través de plugins y componentes de temas) para evitar tener que reescribir muchos elementos de la interfaz de usuario.

---

<div class="post-metadata">

### Author: ![renato](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/renato/32/383632_2.png) [@renato](https://meta.discourse.org/u/renato)
#### Post date: [14 Diciembre, 2022 13:03 UTC](https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892/9 "2022-12-14T13:03:13Z")

</div>

Estoy usando [Discourse como mi proveedor de identidad](https://meta.discourse.org/t/use-discourse-as-an-identity-provider-sso-discourseconnect/32974) y ha estado funcionando muy bien. Puedes usarlo para crear un enlace de " **Iniciar sesión**" en tu sitio web que llevará a tu usuario a tu instancia de Discourse y, si ya ha iniciado sesión o después de completar el flujo de inicio de sesión, el usuario será redirigido a la `return_sso_url` que agregaste al payload, con las credenciales e información del usuario. Esta `return_sso_url` puede ser una ruta en tu sitio web que almacene la sesión autenticada de la manera que prefieras (como una cookie de sesión) una vez que reciba el payload de Discourse.

---

<div class="post-metadata">

### Author: ![RyanKF](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ryankf/32/231027_2.png) [@RyanKF](https://meta.discourse.org/u/RyanKF)
#### Post date: [14 Diciembre, 2022 14:05 UTC](https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892/10 "2022-12-14T14:05:51Z")

</div>

FWIW, Lexicon no está abandonado y todavía está en desarrollo activo.

@Roie_Natan si estás familiarizado con Javascript, podrías echar un vistazo al código fuente de Lexicon para ver cómo se logró.

Sin embargo, como señaló @merefield, existen publicaciones que podrían ayudarte a resolverlo.

Aquí tienes un recurso que habla sobre las sesiones de usuario: [Storing extra data about a user's session - #3 by sam](https://meta.discourse.org/t/storing-extra-data-about-a-users-session/115197/3)

Y también podrías encontrar útil el flujo de autenticación de la aplicación de @pmusaraj:

> <https://github.com/pmusaraj/discourse-mobile-single-site-app/blob/main/js/Authenticate.js>

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [14 Diciembre, 2022 14:10 UTC](https://meta.discourse.org/t/how-to-create-a-login-on-my-front-end-application-to-a-specific-discourse-site/248892/11 "2022-12-14T14:10:22Z")

</div>

¡Genial! Gracias por la corrección.
