> ## 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.

# Obtener información del usuario

> Devuelve el perfil de un usuario con un Token de acceso de Auth0 cuando se haya concedido el scope openid.

export const ResponseSchema = ({statusCode, type = "{}", children}) => {
  const [open, setOpen] = useState(false);
  return <div className="border border-gray-100 dark:border-gray-800 rounded-lg mb-3 overflow-hidden">
      <div className={`flex items-center gap-2.5 px-4 py-2.5 cursor-pointer select-none ${open ? "bg-gray-50 dark:bg-gray-800" : ""}`} onClick={() => setOpen(!open)}>
        {statusCode && <span className="border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 font-mono text-xs px-1.5 py-0.5 rounded">
            {statusCode.startsWith("default") ? "default" : statusCode}
          </span>}
        <span className="text-gray-500 dark:text-gray-400 text-sm font-mono">
          {type}
        </span>
        <span className="text-gray-400 dark:text-gray-500 text-sm italic">
          application/json
        </span>
        <svg className={`ml-auto opacity-50 transition-transform duration-200 ${open ? "rotate-180" : ""}`} width="16" height="16" viewBox="0 0 16 16" fill="none">
          <path d="M4 6l4 4 4-4" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
      </div>
      {open && <div className="px-4 pt-1 pb-3 border-t border-gray-100 dark:border-gray-800">
          {children}
        </div>}
    </div>;
};

<div id="endpoint">
  ## Endpoint
</div>

`GET /userinfo`

Dado el Token de acceso de Auth0 obtenido durante el inicio de sesión, este endpoint devuelve el perfil de un usuario. Este endpoint solo funcionará si se concedió `openid` como scope para el Token de acceso. La información del perfil del usuario incluida en la respuesta depende de los alcances solicitados. Por ejemplo, un scope de solo `openid` puede devolver menos información que un scope de `openid profile email`.

<div id="remarks">
  ### Notas
</div>

* El script de ejemplo de auth0.js usa la versión 8 de la biblioteca. Si usa la versión 7 de auth0.js, consulte esta [guía de referencia](https://auth0.com/docs/libraries/auth0js/v7).
* El método `parseHash` de auth0.js requiere que sus tokens estén firmados con `RS256` en lugar de `HS256`.
* Para devolver `user_metadata` u otra información personalizada desde este endpoint, agregue un claim personalizado al token de ID con una [Action](https://auth0.com/docs/secure/tokens/json-web-tokens/create-custom-claims#create-custom-claims). Para obtener más información, consulte [Claims del perfil del usuario y scope](https://auth0.com/docs/get-started/apis/scopes/openid-connect-scopes).
* Este endpoint devolverá tres encabezados de respuesta HTTP con datos relevantes sobre sus límites de tasa:
  * `X-RateLimit-Limit`: Número de solicitudes permitidas por minuto.
  * `X-RateLimit-Remaining`: Número de solicitudes disponibles. Cada nueva solicitud reduce este número en 1. Por cada minuto transcurrido, se vuelve a agregar una solicitud, por lo que este número aumenta en 1 cada vez.
  * `X-RateLimit-Reset`: Tiempo restante hasta que se restablezca el límite de tasa (`X-RateLimit-Limit`). El valor se expresa en [segundos de época UTC](https://en.wikipedia.org/wiki/Unix_time).
* El claim `Email` devuelve una instantánea del correo electrónico en el momento de iniciar sesión.
* Los claims estándar (distintos de `email`) devuelven el valor más reciente (a menos que el valor provenga de un IdP externo).
* Los claims personalizados siempre devuelven el valor más reciente del claim.
* Para acceder a los valores más actualizados de `email` o de los claims personalizados, debe obtener nuevos tokens. Puede iniciar sesión mediante autenticación silenciosa (donde el parámetro `prompt` de su llamada al endpoint [`authorize`](https://auth0.com/docs/api/authentication#authorization-code-grant) es igual a `none`).
* Para acceder a los valores más actualizados de los claims estándar que se cambiaron mediante un IdP externo (por ejemplo, si el usuario cambió su dirección de correo electrónico en Facebook), debe obtener nuevos tokens. Vuelva a iniciar sesión con el IdP externo, pero *no* mediante autenticación silenciosa.

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

* [Referencia de Auth0.js v8: Extraer authResult y obtener información del usuario](https://auth0.com/docs/libraries/auth0js#extract-the-authresult-and-get-user-info)
* [Política de limitación de velocidad de la API de Auth0](https://auth0.com/docs/troubleshoot/customer-support/operational-policies/rate-limit-policy)

<div id="headers">
  ## Encabezados
</div>

<ParamField header="access_token" type="string" required />

<ParamField header="DPoP" type="string">
  Una prueba DPoP para la solicitud. Es opcional y solo se requiere si la aplicación utiliza Demonstrating Proof-of-Possession.
</ParamField>

<div id="response-schema">
  ## Esquema de respuesta
</div>

<ResponseSchema>
  <ResponseField name="sub" type="string">
    El identificador único del usuario.
  </ResponseField>

  <ResponseField name="name" type="string">
    El nombre completo del usuario.
  </ResponseField>

  <ResponseField name="given_name" type="string">
    El nombre de pila del usuario.
  </ResponseField>

  <ResponseField name="family_name" type="string">
    El apellido del usuario.
  </ResponseField>

  <ResponseField name="middle_name" type="string">
    El segundo nombre del usuario.
  </ResponseField>

  <ResponseField name="nickname" type="string">
    El apodo del usuario.
  </ResponseField>

  <ResponseField name="preferred_username" type="string">
    El username preferido del usuario.
  </ResponseField>

  <ResponseField name="profile" type="string">
    URL de la página de perfil del usuario.
  </ResponseField>

  <ResponseField name="picture" type="string">
    URL de la foto de perfil del usuario.
  </ResponseField>

  <ResponseField name="website" type="string">
    URL del sitio web del usuario.
  </ResponseField>

  <ResponseField name="email" type="string">
    La dirección de correo electrónico del usuario.
  </ResponseField>

  <ResponseField name="email_verified" type="boolean">
    Indica si la dirección de correo electrónico del usuario ha sido verificada.
  </ResponseField>

  <ResponseField name="gender" type="string">
    El género del usuario.
  </ResponseField>

  <ResponseField name="birthdate" type="string">
    La fecha de nacimiento del usuario.
  </ResponseField>

  <ResponseField name="zoneinfo" type="string">
    La zona horaria del usuario.
  </ResponseField>

  <ResponseField name="locale" type="string">
    La configuración regional del usuario.
  </ResponseField>

  <ResponseField name="phone_number" type="string">
    El número de teléfono del usuario.
  </ResponseField>

  <ResponseField name="phone_number_verified" type="boolean">
    Indica si el número de teléfono del usuario ha sido verificado.
  </ResponseField>

  <ResponseField name="address" type="object">
    La dirección del usuario.
  </ResponseField>

  <ResponseField name="updated_at" type="integer">
    La fecha y hora de la última actualización de la información del usuario, en tiempo Unix.
  </ResponseField>
</ResponseSchema>

<div id="response-messages">
  ## Mensajes de respuesta
</div>

| Estado | Descripción                                         |
| ------ | --------------------------------------------------- |
| 200    | Perfil de usuario obtenido correctamente.           |
| 401    | No autorizado: token de acceso no válido o ausente. |
