Realiza tu primera llamada a la API de Google Health

1. Introducción

Visual Studio Code (VS Code) y la extensión Rest Client de Huachao Mao pueden permitirte probar el flujo de consentimiento de OAuth de Google y la API de Google Health. En este codelab, se mostrará cómo configurar la extensión Rest Client, cómo iniciar el flujo de autorización y cómo realizar tu primera llamada a uno de los extremos de la API de Google Health. Luego, puedes leer la documentación del cliente de Rest y la documentación de Fitbit para construir los otros extremos en tu proyecto HTTP.

Si no quieres usar VS Code y Rest Client, las llamadas a la API se pueden realizar con comandos curl.

Qué aprenderás

  • Cómo configurar VS Code con la extensión de Rest Client
  • Cómo configurar un ID de cliente en la consola de Google Cloud
  • Cómo completar el flujo de autorización de OAuth 2.0 de Google para obtener un token de acceso y un token de actualización
  • Cómo realizar llamadas a los extremos de la API de Google Health con el cliente de Rest

Requisitos

Para configurar la app de Fitbit para dispositivos móviles, haz lo siguiente:

  1. En Apple App Store o Google Play Store, busca la app de Fitbit para dispositivos móviles y descárgala.
  2. Selecciona el ícono de la app.
  3. Haz clic en Acceder con Google.
  4. Selecciona tu Cuenta de Google y presiona el botón Continuar.

Para instalar las herramientas de Visual Studio, sigue estos pasos:

  1. Descarga VS Code. Por lo general, la descarga contiene el archivo ejecutable.
  2. Inicia VS Code.
  3. Instala la extensión Rest Client de Huachao Mao.
    • Haz clic en el ícono de la extensión extensión que se encuentra en el lado izquierdo del IDE.
    • Busca REST Client by Huachao Mao y presiona Install.

2. Configura el proyecto de Google Cloud

Usarás la consola de Google Cloud para crear un ID de cliente y habilitar el uso de la API de Google Health.

  1. Accede a la consola de Google Cloud.
  2. Para crear un proyecto nuevo, sigue estos pasos:
    1. Haz clic en Seleccionar un proyecto en el selector de proyectos.
    2. En la esquina superior derecha, selecciona Proyecto nuevo.
    3. Ingresa el nombre del proyecto.
    4. Ingresa tu Ubicación (por ejemplo, “Sin organización”).
    5. Haz clic en el botón Create (Crear).
    6. Elige tu proyecto.

Habilita la API de Google Health

  1. En la esquina superior izquierda, haz clic en el ícono de menú:menú
  2. Selecciona API y servicios > Biblioteca.
  3. Busca "Google Health API" y habilítala.

Configura tus credenciales de OAuth

Si no estás en la consola de Google Cloud, ve a la consola de Google Cloud.

  1. En la esquina superior izquierda, haz clic en el ícono de menú:menú
  2. Selecciona APIs y servicios > Credenciales.
  3. En la parte superior central, selecciona + Crear credenciales > ID de cliente de OAuth.
  4. Haz clic en el botón Configurar pantalla de consentimiento. Si aparece el mensaje "Aún no se configuró Google Auth Platform", haz clic en el botón Comenzar.
  5. En la sección 1:
    1. Ingresa el Nombre de la app.
    2. Ingresa el correo electrónico de asistencia del usuario.
    3. Haz clic en el botón Siguiente.
  6. En la sección 2:
    1. Selecciona Externo.
    2. Haz clic en el botón Siguiente.
  7. En la sección 3:
    1. Ingresa tu dirección de correo electrónico en el campo Información de contacto.
    2. Haz clic en el botón Siguiente.
  8. En la sección 4:
    1. Haz clic en la casilla de verificación para aceptar la Política de Datos del Usuario de los Servicios de las APIs de Google.
    2. Haz clic en el botón Create (Crear).
  9. En la sección de métricas, presiona el botón Crear cliente de OAuth.
  10. Elige el tipo de aplicación Web Application.
  11. Ingresa el nombre del ID de cliente.
  12. Deja vacío el campo Orígenes autorizados de JavaScript.
  13. En URI de redireccionamiento autorizados, presiona el botón + Agregar URI. Ingresa "https://www.google.com" como tu URI de redireccionamiento.
  14. Haz clic en el botón Create (Crear).
  15. La consola de Google mostrará un mensaje que indica que se creó tu ID de cliente. Haz clic en el vínculo Descargar JSON para descargar el ID y el secreto del cliente, o bien anota los valores. No podrás recuperar el secreto del cliente después.
  16. Haz clic en Aceptar. Volverás a la página "IDs de cliente de OAuth 2.0".
  17. Se agregará tu ID de cliente a tu proyecto. Haz clic en la URL del ID de cliente para ver los detalles.

Agrega usuarios de prueba

  1. En el panel izquierdo, selecciona Público. Deberías ver el "Estado de publicación" establecido en Prueba y el "Tipo de usuario" establecido en Externo.
  2. En la sección “Usuarios de prueba”, haz clic en el botón + Agregar usuarios. Ingresa la dirección de correo electrónico de cualquier usuario cuyos datos quieras recuperar.
  3. Haga clic en el botón Guardar.

Agrega permisos al ID de cliente

  1. En el panel izquierdo, selecciona Acceso a los datos.
  2. Haz clic en el botón Agregar o quitar permisos.
  3. En la columna API, busca "Google Health API". En este codelab, usamos el alcance .../auth/googlehealth.activity_and_fitness.readonly.
  4. Después de seleccionar el alcance, presiona el botón Actualizar para volver a la página Acceso a los datos.
  5. Haga clic en el botón Guardar.

Terminaste de configurar tu ID de cliente.

3. Crea el flujo de autorización

  1. Abre la app de VS Code en tu máquina.
  2. En la pantalla de bienvenida, selecciona Abrir.
  3. Selecciona una carpeta para crear este proyecto y presiona Abrir. Tu pantalla debería verse similar a esta, con el nombre de tu carpeta o proyecto en el Explorador.VSC
  4. En el menú principal, elige File -> New Text file.
  5. Guarda el archivo para asignarle un nombre. En el menú principal, elige File -> Save As -> Codelab.http. Esto debería colocar el archivo en tu proyecto. La extensión del archivo debe ser .http o .rest. En este codelab, usamos .http.

A lo largo de este proyecto, usaremos varios valores varias veces. Estos valores son los siguientes:

client_id

Es el valor del ID de cliente de la consola de Google.

secret

Es el valor secreto del cliente de la consola de Google.

redirect_uri

Un extremo en tu app que procesa el código de autorización Para el codelab, usaremos https://www.google.com

access_token

Es el token de acceso que se crea para el usuario una vez que finaliza el flujo de consentimiento.

refresh_token

Es el token de actualización creado para el usuario una vez que finalizó el flujo de consentimiento.

Agrega el siguiente código que define las variables que se usan con este proyecto. Deben estar ubicadas en la parte superior del archivo Codelab.http. Completa los valores de client_id y secret.

### File Variables for the Codelab
@client_id =
@secret =
@redirect_uri = https://www.google.com
@accessToken={{user.response.body.access_token}}
@refreshToken={{user.response.body.refresh_token}}

La URL de autorización, que se usa para iniciar el flujo de consentimiento, se enviará a cada usuario cuyos datos quieras acceder. Para compilar la URL de autorización, necesitamos saber cuál es el extremo de OAuth de Google y usar los parámetros de consulta para especificar el ID de cliente, los permisos a los que queremos acceder y a dónde redireccionar al usuario cuando dé su consentimiento para los permisos. Puedes encontrar la documentación completa para compilar la cadena de autorización de Google en la documentación.

El extremo de OAuth 2.0 de Google se encuentra en https://accounts.google.com/o/oauth2/v2/auth. Solo se puede acceder a este extremo a través de HTTPS. Se rechazan las conexiones HTTP sin encriptar.

El servidor de autorización de Google admite muchos parámetros de cadena de consulta para que las aplicaciones de servidor web personalicen el flujo de autorización. Usaremos los siguientes parámetros de consulta obligatorios: client_id, redirect_uri, response_type y scope. La documentación proporciona una lista de todos los parámetros de consulta y sus descripciones.

Los valores de los parámetros de consulta son los siguientes:

client_id

El valor del ID de cliente de la consola de Google

redirect_uri

Un extremo en tu app que procesa el código de autorización Para el codelab, usa https://www.google.com

response_type

code (valor admitido para apps web)

scope

Los permisos provienen de la consola de Google con la sintaxis https://www.googleapis.com seguida del nombre del permiso. Por ejemplo, https://www.googleapis.com/auth/googlehealth.activity_and_fitness.

Para solicitar varios permisos, incluye todos los permisos en el parámetro scope, separados por espacios (por ejemplo, scope1 scope2 scope3). Cuando forman parte de la URL, los espacios deben estar codificados como URL (por ejemplo, %20).

Después de las variables, escribe nuestra URL de autorización como se muestra. Los parámetros definidos en la parte superior del proyecto no se pueden usar en la cadena de autorización. Por lo tanto, debemos incluir los valores de client_id y redirect_uri. Reemplaza la cadena client-id por tu ID de cliente.

### Google Health API Rest Client Example

### Authorization String
https://accounts.google.com/o/oauth2/v2/auth?client_id=client-id&redirect_uri=https://www.google.com&response_type=code&access_type=offline&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly

Cuando un usuario otorga su consentimiento, Google proporciona un código de autorización que puedes intercambiar por un token de acceso llamando al extremo de token de Google. Agrega la siguiente definición para llamar al extremo del token a Codelab.http debajo de la cadena de autorización. En el siguiente paso, reemplazarás authorization-code por un código de autorización.

### AUTHORIZATION ENDPOINTS
######################################################################
# @name user
POST https://oauth2.googleapis.com/token
Content-Type: application/x-www-form-urlencoded

code=authorization-code&client_id={{clientId}}&client_secret={{secret}}&redirect_uri={{redirect_uri}}&grant_type=authorization_code

@name user hace referencia al usuario actual cuyos datos estás consultando.

4. Autoriza una cuenta y obtén tokens

Ahora, analizaremos el flujo de autorización para obtener tokens de autorización.

La cadena de autorización en Codelab.http se usa para iniciar el flujo de consentimiento basado en el navegador de Google. Es posible que la extensión Rest Client muestre un vínculo Send Request para esta URL. No uses Send Request para esta URL específica. En su lugar, cópialo y pégalo en tu navegador, o bien usa Ctrl + clic (Windows/Linux) o Cmd + clic (Mac) en VS Code para abrirlo en tu navegador predeterminado.

https://accounts.google.com/o/oauth2/v2/auth?client_id=client-id&redirect_uri=https://www.google.com&response_type=code&access_type=offline&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly
  1. Se te pedirá que accedas a tu Cuenta de Google. Debes acceder con una de las cuentas de usuario de prueba que configuraste en la sección Agrega usuarios de prueba.
  2. Es posible que aparezca un mensaje que indica que la app no está verificada. Esto se debe a que la app no se publicó. Presiona “Continuar”.

Captura de pantalla que muestra la advertencia de app sin verificar.

  1. En la página de consentimiento, se enumeran los alcances que se solicitan. El usuario tiene la oportunidad de seleccionar los alcances que quiera compartir con esta app. Haz clic en "Continuar".

Después de dar tu consentimiento para compartir los permisos solicitados, se te redireccionará al redirect_uri que especificaste (en este codelab, https://www.google.com). Google agrega un código de autorización y otros parámetros a redirect_uri, por lo que la URL en la barra de direcciones de tu navegador debería verse de la siguiente manera:

https://www.google.com/?code=4/0Ab32j93oyGWqaXE112sP1IKmh3kV1fE4tcHIMXYJQYWgNEtAa_0-YsfkS9Ekj3Be89u3fw&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly

El código de autorización es el valor alfanumérico que se encuentra entre "code=" y "&scope". En el ejemplo anterior, el valor es el siguiente:

4/0Ab32j93oyGWqaXE112sP1IKmh3kV1fE4tcHIMXYJQYWgNEtAa_0-YsfkS9Ekj3Be89u3fw

En una app de producción, tu servidor analizaría esto a partir de los parámetros de la URL. Para este codelab, copia el código de autorización de la URL en tu navegador.

Ahora, intercambia este código de autorización por un access_token y un refresh_token. En Codelab.http, reemplaza authorization-code en el cuerpo de la solicitud POST /token por el código de autorización que copiaste.

POST https://oauth2.googleapis.com/token
Content-Type: application/x-www-form-urlencoded

code=authorization-code&client_id={{client_id}}&client_secret={{secret}}&redirect_uri={{redirect_uri}}&grant_type=authorization_code

Haz clic en el vínculo Send Request que se encuentra justo arriba de la línea POST https://oauth2.googleapis.com/token.

La respuesta debería verse similar a esto:

{
  "access_token": "ya29.a0ATi6K2uasci7FyyIClNLtQou6z...",
  "expires_in": 3599,
  "refresh_token": "1//05EuqYpEXjJCHCgYIA...",
  "scope": "https://www.googleapis.com/auth/googlehealth.activity_and_fitness",
  "token_type": "Bearer",
  "refresh_token_expires_in": 604799
}

Cuando recibes esta respuesta, Rest Client completa automáticamente las variables @accessToken y @refreshToken definidas en la parte superior de Codelab.http para su uso en solicitudes posteriores.

Acerca de los tokens de actualización

Cuando intercambias el código de autorización, la respuesta puede incluir un refresh_token además del access_token. Los access_token son de corta duración (por lo general, 1 hora). Cuando vence un access_token, debes usar el refresh_token para obtener un access_token nuevo sin que el usuario tenga que volver a acceder ni dar su consentimiento. Esto es posible porque incluimos access_type=offline en nuestra solicitud de autorización.

Si no recibes un refresh_token en la respuesta, es posible que ya hayas otorgado el consentimiento para esta app y estos permisos. Por lo general, los tokens de actualización solo se emiten la primera vez que un usuario otorga su consentimiento para tu app o cuando se agrega prompt=consent a la URL de autorización para forzar la aparición de la pantalla de consentimiento incluso en autorizaciones posteriores.

El refresh_token tiene una duración prolongada, pero puede vencer o dejar de ser válido si no se usa durante 6 meses, si el usuario revoca el acceso a tu app o por otros motivos. Debes almacenar refresh_token de forma segura para usarlo en el futuro.

Para obtener más detalles, consulta Actualiza un token de acceso (acceso sin conexión).

5. Cómo agregar datos a la app de Fitbit para dispositivos móviles

Si eres un usuario nuevo de Fitbit, es posible que no tengas datos en tu cuenta de Fitbit para consultar. Agregaremos manualmente un registro de ejercicios que podremos consultar a través de uno de los extremos. Para registrar un ejercicio de forma manual, sigue estos pasos:

  1. Abre la app de Fitbit para dispositivos móviles en tu dispositivo. De ser necesario, accede a tu cuenta de Fitbit.
  2. En la esquina inferior derecha de la pantalla, presiona el botón +.
  3. En la sección "Registrar manualmente", presiona Actividad.
  4. Busca el tipo de ejercicio Caminata y selecciónalo.
  5. Ingresa una hora de inicio para hoy.
  6. Cambia la duración a 15 minutos.
  7. Deja la distancia en 1.0 mi.
  8. Presiona Agregar.
  9. Para sincronizar la app para dispositivos móviles con los servidores de Fitbit, mantén presionada la pantalla y deslízala hacia abajo. Cuando sueltes el dedo, deberías ver la sincronización de la app para dispositivos móviles.
  10. En la sección "Actividad", deberías ver la entrada de Caminata que registraste de forma manual.Captura de pantalla que muestra una actividad de caminata.

6. Cómo recuperar datos con el método list

Para llamar al método list, agrega el siguiente código a Codelab.http, justo debajo del extremo /token.

### users.dataTypes.dataPoints
#####################################################

### LIST exercise
GET https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints
Authorization: Bearer {{accessToken}}
Accept: application/json

Este código llama al extremo list para mostrar los pasos que registró el usuario en su cuenta de Fitbit. El recuento de pasos de cada minuto se devolverá en la respuesta, de manera similar al extremo Activity Intraday de la API de Fitbit Web v1.

Para ejecutar la llamada, presiona el vínculo Send Request del extremo GET. Tu respuesta debería verse similar a lo siguiente:

{
  "dataPoints": [
    {
      "name": "users/2515055256096816351/dataTypes/exercise/dataPoints/8896720705097069096",
      "dataSource": {
        "recordingMethod": "MANUAL",
        "platform": "FITBIT"
      },
      "exercise": {
        "interval": {
          "startTime": "2026-02-23T13:10:00Z",
          "startUtcOffset": "-18000s",
          "endTime": "2026-02-23T13:25:00Z",
          "endUtcOffset": "-18000s"
        },
        "exerciseType": "WALKING",
        "metricsSummary": {
          "caloriesKcal": 16,
          "distanceMillimiters": 1609344,
          "steps": "2038",
          "averagePaceSecondsPerMeter": 0.55923407301360051,
          "activeZoneMinutes": "0"
        },
        "exerciseMetadata": {},
        "displayName": "Walk",
        "activeDuration": "900s",
        "exerciseEvents": [
          {
            "eventTime": "2026-02-23T13:10:00Z",
            "eventUtcOffset": "-18000s",
            "exerciseEventType": "START"
          },
          {
            "eventTime": "2026-02-23T13:25:00Z",
            "eventUtcOffset": "-18000s",
            "exerciseEventType": "STOP"
          }
        ],
        "updateTime": "2026-02-24T01:19:22.450466Z"
      }
    },
    {
      "name": "users/2515055256096816351/dataTypes/exercise/dataPoints/5870930690409355408",
      "dataSource": {
        "recordingMethod": "MANUAL",
        "platform": "FITBIT"
      },
      "exercise": {
        "interval": {
          "startTime": "2026-02-23T06:00:00Z",
          "startUtcOffset": "-18000s",
          "endTime": "2026-02-23T06:15:00Z",
          "endUtcOffset": "-18000s"
        },
        "exerciseType": "WALKING",
        "metricsSummary": {
          "caloriesKcal": 17,
          "distanceMillimiters": 1609344,
          "steps": "2038",
          "averagePaceSecondsPerMeter": 0.55923407301360051,
          "averageHeartRateBeatsPerMinute": "81",
          "activeZoneMinutes": "0",
          "heartRateZoneDurations": {
            "lightTime": "900s"
          }
        },
        "exerciseMetadata": {},
        "displayName": "Walk",
        "activeDuration": "900s",
        "exerciseEvents": [
          {
            "eventTime": "2026-02-23T06:00:00Z",
            "eventUtcOffset": "-18000s",
            "exerciseEventType": "START"
          },
          {
            "eventTime": "2026-02-23T06:15:00Z",
            "eventUtcOffset": "-18000s",
            "exerciseEventType": "STOP"
          }
        ],
        "updateTime": "2026-02-23T08:29:39.480437Z"
      }
    }
  ],
  "nextPageToken": ""
}

Muchos extremos admiten parámetros de consulta para el filtrado o la paginación. Por ejemplo, el ejercicio admite el filtro interval.civil_start_time. Agrega la siguiente solicitud a Codelab.http para enumerar los ejercicios dentro de un período específico:

### LIST exercise >= civil start time
GET https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints?filter=exercise.interval.civil_start_time >= "2026-02-22T00:00:00"
Authorization: Bearer {{accessToken}}
Accept: application/json

7. Felicitaciones

¡Felicitaciones!

Completaste el codelab básico y aprendiste correctamente a usar Visual Studio Code y la extensión Rest Client para probar la autorización de OAuth 2.0 y realizar llamadas a los extremos de la API de Google Health. Desde aquí, puedes agregar los extremos adicionales de la misma manera que lo hiciste al principio de la sección Recupera datos con el método List.

Esperamos que disfrutes la creación de apps que se integran con el ecosistema de la API de Google Health. Para obtener más información, explora otros extremos de la API de Google Health en la documentación de referencia y obtén más información sobre Google OAuth 2.0 para aplicaciones de servidor web.