Saltar al contenido principal
Auth0 admite la vinculación de cuentas de usuario de varios . Una forma de implementar esta funcionalidad es permitir que el usuario vincule cuentas de forma explícita. En este escenario, el usuario se autentica a través de la interfaz de usuario de su aplicación de página única (SPA) y, posteriormente, puede usar un enlace o botón para vincular otra cuenta con la primera. Cuando el usuario hace clic en ese enlace o botón, su aplicación realiza una llamada para que, cuando el usuario inicie sesión con el segundo proveedor, la segunda cuenta quede vinculada con la primera. Cuando inicia la vinculación de cuentas, puede seleccionar qué identidad usar como cuenta principal y cuál como secundaria. Esta elección depende del conjunto de atributos que quiera conservar en el perfil principal, ya que solo se conservarán los atributos de la cuenta principal. Cree una aplicación de página única de ejemplo en React con este proyecto en GitHub. En este proyecto, abra el archivo auth_config.json en su editor de texto y actualice el dominio y client_id con sus datos. Agregue http://localhost:3000 en los campos “Allowed Callback URLs”, “Allowed Logout URLs” y “Allowed Web Origins”.
  1. Haga que el usuario inicie sesión en su aplicación.

    El usuario se autentica en su SPA mediante Universal Login, solicitando un token de acceso para la Management API.

    En un inicio de sesión típico en una SPA, el callback se maneja del lado del cliente en la misma página, y se recibe un JWT tras una autenticación correcta. Para obtener más información, consulte el inicio rápido de Single-Page App.
  2. El usuario inicia la vinculación de cuentas. Su SPA debe proporcionar una interfaz de usuario para que el usuario inicie la vinculación con sus otras cuentas. Por ejemplo, su SPA podría incluir una página de configuración de la cuenta:

    Cuando el usuario hace clic en el botón Vincular cuenta, su aplicación redirige al usuario a la página de Universal Login, donde inicia sesión con la conexión que quiere vincular. Después de autenticarse correctamente, use el token obtenido para vincular las cuentas.

    También puede agregar un botón para cada conexión (por ejemplo, ‘Vincular cuenta de Facebook’, ‘Vincular cuenta de Google’) y redirigir al usuario a /authorize con el parámetro connection establecido (por ejemplo, /authorize?connection=facebook).
    Página de perfil de ejemplo con vinculación de cuentas de usuario
  3. Vincule las cuentas llamando al endpoint Link a User Account de Auth0 Management API.
    Para conservar y fusionar user_metadata de la cuenta secundaria, debe recuperarlo y fusionarlo con los metadatos de la cuenta principal antes de llamar al endpoint de la API. Después de vincular las cuentas, los metadatos de la cuenta secundaria se descartan.Cuando inicia la vinculación de cuentas, puede seleccionar qué identidad se usará como cuenta principal y cuál como secundaria. Esta elección dependerá del conjunto de atributos que quiera conservar en el perfil principal.
  4. En la función linkAccount, llame a la Management API. Autentíquese con la API usando el JWT principal, que es el Token de acceso, y realice la vinculación con el ID del usuario principal y el JWT secundario, que es el ID Token del usuario secundario.
    const linkAccount = async () => {
      const accessToken = await auth0.getTokenSilently();
      const { sub } = await auth0.getUser();
      // authenticateUser debe autenticar al usuario con la cuenta que se va a vincular
      // Consulte la muestra de GitHub para obtener más detalles
      const {
        __raw: targetUserIdToken,
        email_verified,
        email,
      } = await authenticateUser();
      if (!email_verified) {
        throw new Error(
          `Account linking is only allowed to a verified account. Please verify your email ${email}.`
        );
      }
      await fetch(`https://${config.domain}/api/v2/users/${sub}/identities`, {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          Authorization: `Bearer ${accessToken}`,
        },
        body: JSON.stringify({
          link_with: targetUserIdToken,
        }),
      });
    };
    

vinculación de cuentas: Tokens de acceso frente a ID Tokens

Anteriormente, en algunos casos, podía usar ID Tokens para vincular y desvincular cuentas de usuario. Esta funcionalidad se está dejando obsoleta. Tendrá que usar Tokens de acceso en todos los casos. El cambio en la desvinculación de cuentas es que ya no puede usar un ID Token en el encabezado Authorization. En su lugar, debe usarse un Token de acceso. La funcionalidad sigue estando disponible, pero no se recomienda, y se anima a los usuarios afectados a migrar. Consulte la Guía de migración: vinculación de cuentas with Access Tokens vs. ID Tokens para obtener más detalles.

Más información