> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Comprenda cómo se pueden vincular cuentas de usuario en Auth0 desde varios proveedores de identidad.

# Vinculación de cuentas de usuario

export const AuthCodeGroup = ({children, dropdown}) => {
  const [processedChildren, setProcessedChildren] = useState(children);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      unsubscribe = window.autorun(() => {
        const processChildren = node => {
          if (typeof node === "string") {
            let processedNode = node;
            for (const [key, value] of window.rootStore.variableStore.values.entries()) {
              const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
              processedNode = processedNode.replaceAll(new RegExp(escapedKey, "g"), value);
            }
            return processedNode;
          } else if (Array.isArray(node)) {
            return node.map(processChildren);
          } else if (node && node.props && node.props.children) {
            return {
              ...node,
              props: {
                ...node.props,
                children: processChildren(node.props.children)
              }
            };
          }
          return node;
        };
        setProcessedChildren(processChildren(children));
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  return <CodeGroup dropdown={dropdown}>{processedChildren}</CodeGroup>;
};

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Connected Accounts permite vincular un único perfil de usuario de Auth0 con varias cuentas externas. Cuando habilitas Connected Accounts para un proveedor externo compatible, Auth0 añade automáticamente la cuenta de ese proveedor al perfil del usuario después de que inicie sesión correctamente. Para obtener más información, consulta [Connected Accounts for Token Vault](/es/docs/secure/tokens/token-vault/connected-accounts-for-token-vault).
</Callout>

Auth0 admite la vinculación de cuentas de usuario de varios <Tooltip tip="Proveedor de identidad (IdP): servicio que almacena y administra identidades digitales." cta="Ver glosario" href="/es/docs/glossary?term=identity+providers">proveedores de identidad</Tooltip>. Esto permite que un usuario se autentique con cualquiera de sus cuentas y que tu aplicación lo siga reconociendo y lo asocie al mismo perfil de usuario.

<Card title="La disponibilidad varía según el plan de Auth0">
  Tanto tu implementación específica de Login como tu plan de Auth0 o acuerdo personalizado determinan si esta funcionalidad está disponible. Para obtener más información, consulta [Pricing](https://auth0.com/pricing).
</Card>

De forma predeterminada, Auth0 trata todas las identidades por separado. Por ejemplo, si un usuario inicia sesión primero en la base de datos de Auth0 y luego a través de Google o Facebook, Auth0 interpretaría estos dos intentos como dos usuarios distintos. Puedes implementar funcionalidad para permitir que un usuario vincule cuentas explícitamente. En este escenario, el usuario iniciaría sesión con un proveedor inicial, quizá Google. Tu aplicación proporcionaría un enlace o botón para permitirle vincular otra cuenta a la primera. El usuario haría clic en este enlace o botón, y tu aplicación realizaría una llamada para que, cuando el usuario inicie sesión con el segundo proveedor, la segunda cuenta quede vinculada a la primera.

<div id="advantages-of-linking-accounts">
  ## Ventajas de vincular cuentas
</div>

* Permite a los usuarios iniciar sesión con cualquier proveedor de identidad sin tener que crear un perfil independiente para cada uno
* Permite a los usuarios registrados usar un nuevo inicio de sesión social o <Tooltip tip="Sin contraseña: forma de autenticación que no depende de una contraseña como primer factor." cta="Ver glosario" href="/es/docs/glossary?term=passwordless">sin contraseña</Tooltip> y seguir usando su perfil existente
* Permite a los usuarios que se registraron con un inicio de sesión sin contraseña vincular esa identidad a una cuenta con un perfil más completo
* Permite que tus aplicaciones recuperen datos del perfil de usuario almacenados en varias conexiones

<div id="precautions">
  ## Precauciones
</div>

Vincular cuentas de manera insegura puede permitir que actores maliciosos accedan a cuentas de usuario legítimas. Tenga en cuenta lo siguiente:

Tanto en la vinculación manual como en la automática de cuentas, su inquilino debe solicitar autenticación para **ambas** cuentas antes de vincularlas.

Además, **cada** vinculación manual de cuentas debe solicitar al usuario que introduzca sus credenciales.

<div id="how-it-works">
  ## Cómo funciona
</div>

El proceso de vinculación de cuentas fusiona dos perfiles de usuario existentes en uno solo. Al vincular cuentas, se deben especificar una **cuenta principal** y una **cuenta secundaria**.

En el siguiente ejemplo puede ver cómo quedará el perfil vinculado resultante para las cuentas principal y secundaria de ejemplo.

<AuthCodeGroup>
  ```json Perfil de la cuenta principal expandible theme={null}
  {
    "email": "your0@email.com",
    "email_verified": true,
    "name": "John Doe",
    "given_name": "John",
    "family_name": "Doe",
    "picture": "https://lh3.googleusercontent..../photo.jpg",
    "gender": "male",
    "locale": "en",
    "user_id": "google-oauth2|115015401343387192604",
    "identities": [
      {
        "provider": "google-oauth2",
        "user_id": "115015401343387192604",
        "connection": "google-oauth2",
        "isSocial": true
      }
    ],
    "user_metadata": {
      "color": "red"
    },
    "app_metadata": {
      "roles": [
        "Admin"
      ]
    },
    ...
  }
  ```

  ```json Perfil de la cuenta secundaria theme={null}
  {
    "phone_number": "+14258831929",
    "phone_verified": true,
    "name": "+14258831929",
    "updated_at": "2015-10-08T18:35:18.102Z",
    "user_id": "sms|560ebaeef609ee1adaa7c551",
    "identities": [
      {
        "user_id": "560ebaeef609ee1adaa7c551",
        "provider": "sms",
        "connection": "sms",
        "isSocial": false
      }
    ],
    "user_metadata": {
      "color": "blue"
    },
    "app_metadata": {
      "roles": [
        "AppAdmin"
      ]
    },
    ...
  }
  ```

  ```json Perfil vinculado expandible theme={null}
  {
    "email": "your0@email.com",
    "email_verified": true,
    "name": "John Doe",
    "given_name": "John",
    "family_name": "Doe",
    "picture": "https://lh3.googleusercontent..../photo.jpg",
    "gender": "male",
    "locale": "en",
    "user_id": "google-oauth2|115015401343387192604",
    "identities": [
      {
        "provider": "google-oauth2",
        "user_id": "115015401343387192604",
        "connection": "google-oauth2",
        "isSocial": true
      },
      {
        "profileData": {
          "phone_number": "+14258831929",
          "phone_verified": true,
          "name": "+14258831929"
        },
        "user_id": "560ebaeef609ee1adaa7c551",
        "provider": "sms",
        "connection": "sms",
        "isSocial": false
      }
    ],
    "user_metadata": {
      "color": "red"
    },
    "app_metadata": {
      "roles": [
        "Admin"
      ]
    },
    ...
  }
  ```
</AuthCodeGroup>

Tenga en cuenta lo siguiente:

* El `user_id` y todas las demás propiedades principales del perfil siguen siendo las de la identidad principal
* La primera identidad de la matriz `user.identities` es la identidad principal
* La cuenta secundaria ahora está integrada en la matriz `user.identities` del perfil principal
* Los atributos de la cuenta secundaria se colocan dentro del campo `profileData` de la identidad correspondiente dentro de la matriz
* Los valores de `user_metadata` y `app_metadata` de la cuenta principal no han cambiado
* Los valores de `user_metadata` y `app_metadata` de la cuenta secundaria se descartan
* No hay una fusión automática de perfiles de usuario con identidades asociadas
* La cuenta secundaria se elimina de la lista de usuarios
* Si elimina la cuenta principal, la cuenta secundaria también se elimina

<div id="metadata-merge">
  ### Fusión de metadatos
</div>

Los metadatos no se fusionan automáticamente durante la vinculación de cuentas. Si quiere fusionarlos, debe hacerlo manualmente mediante el endpoint [`/users/patch_users_by_id`](https://auth0.com/docs/api/v2#!/Users/patch_users_by_id) de la API de Management.

También está disponible el [SDK de Auth0 para Node.js de APIv2](https://github.com/auth0/node-auth0/).

Para obtener más información, consulte [Cómo funcionan los metadatos en los perfiles de usuario](/es/docs/manage-users/user-accounts/metadata)

<div id="scenarios">
  ## Escenarios
</div>

Hay dos formas distintas de implementar la vinculación de cuentas:

* Vinculación de cuentas iniciada por el usuario: permita que los usuarios vinculen sus cuentas desde una pantalla de administración en su aplicación.
* Vinculación de cuentas sugerida: identifique las cuentas con el mismo correo electrónico y pida al usuario en su aplicación que las vincule.

<div id="user-initiated-account-linking">
  ### Vinculación de cuentas iniciada por el usuario
</div>

Normalmente, la vinculación de cuentas la inicia un usuario autenticado. Tu aplicación debe proporcionar la interfaz de usuario, por ejemplo, un botón de **Vincular cuentas** en la página de perfil del usuario.

Para obtener más información sobre cómo implementar la vinculación de cuentas iniciada por el usuario en una Single Page Application, consulta [Client-Side Account Linking](/es/docs/manage-users/user-accounts/user-account-linking/user-initiated-account-linking-client-side-implementation). Para obtener más información sobre cómo implementar la vinculación de cuentas iniciada por el usuario en una Regular Web Application, consulta [Server-Side Account Linking](/es/docs/manage-users/user-accounts/user-account-linking/suggested-account-linking-server-side-implementation).

<div id="suggested-account-linking">
  ### Vinculación sugerida de cuentas
</div>

Puede encontrar cuentas con el mismo correo electrónico y pedirles a los usuarios que las vinculen. Por ejemplo, un usuario puede crear una cuenta con Google con `user@gmail.com` y luego iniciar sesión con Facebook con una cuenta asociada al mismo correo electrónico.

Si eso ocurre, puede mostrarles a los usuarios la lista de cuentas disponibles para que puedan vincularlas, autenticándose primero con la cuenta con la que se vincularán.

También puede usar la [Extensión de vinculación de cuentas](/es/docs/customize/extensions/account-link-extension) para lograr el mismo resultado.

<Warning>
  Anteriormente, en algunos casos, podía usar ID Tokens para vincular y desvincular cuentas de usuario. Esta funcionalidad está quedando obsoleta. Tendrá que usar Tokens de acceso en todos los casos.
</Warning>

<div id="learn-more">
  ## Más información
</div>

* [Vincular cuentas de usuario](/es/docs/manage-users/user-accounts/user-account-linking/link-user-accounts)
* [Desvincular cuentas de usuario](/es/docs/manage-users/user-accounts/user-account-linking/unlink-user-accounts)
* [Vinculación de cuentas iniciada por el usuario: implementación del lado del cliente](/es/docs/manage-users/user-accounts/user-account-linking/user-initiated-account-linking-client-side-implementation)
* [Vinculación de cuentas de usuario: implementación del lado del servidor](/es/docs/manage-users/user-accounts/user-account-linking/suggested-account-linking-server-side-implementation)
