1. Введение
Visual Studio Code (VS Code) и расширение Rest Client от Хуачао Мао позволяют тестировать процесс авторизации Google OAuth и API Google Health. В этом практическом занятии мы покажем, как настроить расширение Rest Client, как инициировать процесс авторизации и выполнить первый вызов к одной из конечных точек API Google Health. После этого вы сможете ознакомиться с документацией Rest Client и документацией Fitbit, чтобы создать другие конечные точки в вашем HTTP-проекте.
Если вы не хотите использовать VS Code и REST-клиент, вызовы API можно выполнять с помощью команд curl .
Что вы узнаете
- Как настроить VS Code с расширением REST-клиента.
- Как настроить идентификатор клиента в консоли Google Cloud.
- Как пройти процедуру авторизации Google OAuth 2.0 для получения токена доступа и токена обновления.
- Как выполнять вызовы к конечным точкам API Google Health с помощью REST-клиента.
Что вам понадобится
- Мобильное приложение Fitbit
- Visual Studio Code
- Расширение REST Client от Хуачо Мао.
Чтобы настроить мобильное приложение Fitbit:
- Найдите мобильное приложение Fitbit в Apple App Store или Google Play Store и скачайте его.
- Выберите значок приложения.
- Нажмите «Войти через Google».
- Выберите свой аккаунт Google и нажмите кнопку «Продолжить» .
Для установки инструментов Visual Studio:
- Скачайте VS Code. Обычно в загруженном архиве находится исполняемый файл.
- Запустите VS Code.
- Установите расширение Rest Client от Хуачао Мао.
- Нажмите на значок расширения.
в левой части IDE. - Найдите REST Client от Huachao Mao и нажмите «Установить» .
- Нажмите на значок расширения.
2. Настройка проекта Google Cloud
Для создания идентификатора клиента и включения использования API Google Health вам потребуется использовать консоль Google Cloud.
- Войдите в консоль Google Cloud .
- Для создания нового проекта:
- Нажмите «Выбрать проект» в окне выбора проектов.
- В правом верхнем углу выберите «Новый проект» .
- Введите название вашего проекта .
- Укажите ваше местоположение (например, "Нет организации").
- Нажмите кнопку «Создать» .
- Выберите свой проект.
Включите API Google Health.
- В верхнем левом углу нажмите на значок меню:

- Выберите API и сервисы > Библиотека .
- Найдите "Google Health API" и включите его.
Настройте свои учетные данные OAuth.
Если вы не вошли в консоль Google Cloud, перейдите в консоль Google Cloud .
- В верхнем левом углу нажмите на значок меню:

- Выберите API и сервисы > Учетные данные .
- В верхней центральной части выберите + Создать учетные данные > Идентификатор клиента OAuth .
- Нажмите кнопку «Настроить экран согласия» . Если появится сообщение «Платформа аутентификации Google еще не настроена», нажмите кнопку «Начать» .
- В разделе 1:
- Введите название приложения .
- Введите адрес электронной почты службы поддержки пользователей .
- Нажмите кнопку «Далее» .
- В разделе 2:
- Выберите «Внешний» .
- Нажмите кнопку «Далее» .
- В разделе 3:
- Введите свой адрес электронной почты в поле «Контактная информация» .
- Нажмите кнопку «Далее» .
- В разделе 4:
- Установите флажок, чтобы согласиться с Политикой Google в отношении пользовательских данных в рамках API-сервисов .
- Нажмите кнопку «Создать» .
- В разделе метрик нажмите кнопку «Создать OAuth-клиент» .
- Выберите тип приложения: Веб-приложение .
- Введите имя идентификатора клиента.
- Оставьте поле «Авторизованные источники JavaScript» пустым.
- В разделе «Авторизованные URI перенаправления» нажмите кнопку «+ Добавить URI» . Введите «https://www.google.com» в качестве URI перенаправления.
- Нажмите кнопку «Создать» .
- В консоли Google отобразится сообщение о создании идентификатора клиента. Вы можете либо нажать на ссылку «Скачать JSON» , чтобы загрузить идентификатор клиента и секретный ключ клиента, либо записать эти значения. После этого восстановить секретный ключ клиента будет невозможно.
- Нажмите ОК . Вы вернетесь на страницу «Идентификаторы клиентов OAuth 2.0».
- Ваш идентификатор клиента будет добавлен к вашему проекту. Щелкните URL-адрес идентификатора клиента, чтобы просмотреть подробности.
Добавить тестовых пользователей
- В левой панели выберите «Аудитория» . Вы должны увидеть, что в поле «Статус публикации» установлено значение «Тестирование », а в поле «Тип пользователя» — «Внешний ».
- В разделе «Тестовые пользователи» нажмите кнопку «+ Добавить пользователей» . Введите адрес электронной почты каждого пользователя, данные которого вы хотите получить.
- Нажмите кнопку «Сохранить» .
Добавьте области действия к идентификатору клиента.
- В левой панели выберите «Доступ к данным» .
- Нажмите кнопку «Добавить или удалить области действия» .
- В столбце API найдите "Google Health API". Для этого практического задания мы используем область действия
.../auth/googlehealth.activity_and_fitness.readonly - После выбора области действия нажмите кнопку «Обновить» , чтобы вернуться на страницу доступа к данным.
- Нажмите кнопку «Сохранить» .
Вы завершили настройку своего идентификатора клиента.
3. Создайте поток авторизации.
- Откройте приложение VS Code на своем компьютере.
- На экране приветствия выберите «Открыть» .
- Выберите папку для создания проекта и нажмите «Открыть» . На экране должно отобразиться примерно следующее: название вашей папки или проекта будет отображаться в проводнике.

- В главном меню выберите Файл -> Создать текстовый файл .
- Сохраните файл, чтобы дать ему имя. В главном меню выберите Файл -> Сохранить как -> Codelab.http . Это поместит файл в ваш проект. Расширение файла должно быть либо .http, либо .rest. В этом примере мы используем .http.
В ходе этого проекта мы будем многократно использовать несколько значений. Эти значения следующие:
| Значение идентификатора клиента из консоли Google. |
| Секретная ценность клиента из консоли Google. |
| Конечная точка в вашем приложении, которая обрабатывает код авторизации. Для практического занятия мы используем https://www.google.com |
| Токен доступа, создаваемый для пользователя после завершения процесса получения согласия. |
| Токен обновления, создаваемый для пользователя после завершения процесса получения согласия. |
Добавьте следующий код, определяющий переменные, используемые в этом проекте. Он должен располагаться в верхней части файла Codelab.http. Заполните значения для client_id и 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}}
The authorization URL, used to initiate the consent flow, will be sent to each user whose data you want to access. To build the authorization URL, we need to know what the Google OAuth endpoint is and use the query parameters to specify the client ID, the scopes we want access to, and where to redirect the user when they consent to the scopes. The full documentation for building the Google authorization string can be found in the documentation .
Конечная точка OAuth 2.0 от Google находится по адресу https://accounts.google.com/o/oauth2/v2/auth . Доступ к этой конечной точке возможен только по протоколу HTTPS. Простые HTTP-соединения отклоняются.
Сервер авторизации Google поддерживает множество параметров строки запроса для веб-приложений, позволяющих настраивать процесс авторизации. Мы будем использовать следующие обязательные параметры запроса: client_id , redirect_uri , response_type и scope . В документации приведен список всех параметров запроса и их описание.
Значения параметров запроса следующие:
| Значение идентификатора клиента из консоли Google. |
| Конечная точка в вашем приложении, которая обрабатывает код авторизации. Для выполнения практического задания используйте https://www.google.com |
| |
| Ссылки на области действия (scopes) берутся из консоли Google с использованием синтаксиса https://www.googleapis.com , за которым следует имя области действия. Например, https://www.googleapis.com/auth/googlehealth.activity_and_fitness. |
После переменных укажите URL-адрес авторизации, как показано. Параметры, определенные в верхней части проекта, нельзя использовать в строке авторизации. Поэтому необходимо включить значения для client_id и redirect_uri . Замените строку client-id на ваш идентификатор клиента.
### 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
Когда пользователь дает согласие, Google предоставляет код авторизации, который вы обмениваете на токен доступа, вызывая конечную точку токена Google. Добавьте следующее определение для вызова конечной точки токена к Codelab.http ниже строки авторизации. На следующем шаге вы замените authorization-code на код авторизации.
### 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 указывает на текущего пользователя, к данным которого вы обращаетесь.
4. Авторизуйте учетную запись и получите токены.
Теперь мы рассмотрим процесс авторизации для получения токенов авторизации.
Строка авторизации в Codelab.http используется для запуска процесса получения согласия от Google через браузер. Расширение Rest Client может отображать ссылку «Отправить запрос» для этого URL-адреса. Не используйте «Отправить запрос» для этого конкретного URL-адреса. Вместо этого скопируйте и вставьте его в свой браузер или используйте Ctrl+Click (Windows/Linux) или Cmd+Click (Mac) в VS Code, чтобы открыть его в браузере по умолчанию.
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
- Вам будет предложено войти в свою учетную запись Google. Необходимо войти, используя одну из тестовых учетных записей пользователей, которые вы настроили в разделе «Добавить тестовых пользователей» .
- Возможно, вам будет показано сообщение о том, что приложение не проверено. Это связано с тем, что приложение еще не опубликовано. Нажмите «Продолжить».

- На странице согласия отображается список запрашиваемых областей действия. Пользователь может выбрать те области, которыми он хочет поделиться с этим приложением. Нажмите «Продолжить».
После подтверждения согласия на предоставление запрошенных прав доступа, вы будете перенаправлены на указанный вами redirect_uri (в этом примере — https://www.google.com). Google добавляет к redirect_uri код авторизации и другие параметры, поэтому URL-адрес в адресной строке вашего браузера должен выглядеть примерно так:
https://www.google.com/?code=4/0Ab32j93oyGWqaXE112sP1IKmh3kV1fE4tcHIMXYJQYWgNEtAa_0-YsfkS9Ekj3Be89u3fw&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly
Код авторизации — это буквенно-цифровое значение, находящееся между "code=" и "&scope". В приведенном выше примере значение следующее:
4/0Ab32j93oyGWqaXE112sP1IKmh3kV1fE4tcHIMXYJQYWgNEtAa_0-YsfkS9Ekj3Be89u3fw
В рабочем приложении ваш сервер будет анализировать это из параметров URL. Для этого практического задания скопируйте код авторизации из URL в вашем браузере.
Теперь замените этот код авторизации на access_token и refresh_token . В Codelab.http замените authorization-code в теле POST-запроса /token на скопированный вами код авторизации.
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
Нажмите на ссылку «Отправить запрос» чуть выше строки POST https://oauth2.googleapis.com/token .
Ответ должен выглядеть примерно так:
{
"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
}
Получив этот ответ, Rest Client автоматически заполнит переменные @accessToken и @refreshToken , определенные в начале Codelab.http для использования в последующих запросах.
О токенах обновления
При обмене кодом авторизации ответ может включать в себя не только access_token но и refresh_token . access_token имеет короткий срок действия (обычно 1 час). Когда access_token истекает, необходимо использовать refresh_token для получения нового access_token без необходимости повторного входа пользователя в систему или подтверждения согласия. Это возможно, поскольку мы включили access_type=offline в наш запрос авторизации.
Если в ответе не отображается refresh_token , это может быть связано с тем, что вы уже предоставили согласие для этого приложения и областей действия. Refresh token обычно выдаются только при первом предоставлении пользователем согласия для вашего приложения или при добавлении prompt=consent к URL-адресу авторизации, чтобы принудительно отображать экран согласия даже при последующих авторизациях.
Ток refresh_token имеет длительный срок действия, но может истечь или стать недействительным, если он не используется в течение 6 месяцев, если пользователь отзывает доступ к вашему приложению или по другим причинам. Вам следует надежно хранить refresh_token для дальнейшего использования.
Для получения более подробной информации см. раздел «Обновление токена доступа (автономный доступ)» .
5. Добавьте данные в мобильное приложение Fitbit.
Новым пользователям Fitbit может не хватать данных для запросов в их учетной записи. Мы вручную добавим запись о тренировке, которую затем можно будет запросить через один из конечных пунктов. Чтобы вручную записать тренировку, выполните следующие шаги:
- Откройте мобильное приложение Fitbit на своем устройстве. При необходимости войдите в свою учетную запись Fitbit.
- В правом нижнем углу экрана нажмите кнопку «+».
- В разделе «Вручную» нажмите «Действия» .
- Найдите вид физической активности «Ходьба» и выберите его.
- Введите время начала занятий на сегодня.
- Измените продолжительность на 15 минут .
- Оставьте расстояние 1,0 мили .
- Нажмите « Добавить ».
- Для синхронизации мобильного приложения с серверами Fitbit нажмите и удерживайте палец на экране, затем проведите им вниз. После отпускания пальца вы увидите, как мобильное приложение синхронизируется.
- В разделе «Активность» вы должны увидеть запись о прогулке, внесенную вами вручную.

6. Получение данных с использованием метода списка.
Чтобы вызвать метод list , добавьте следующий код в Codelab.http , сразу после конечной точки /token .
### users.dataTypes.dataPoints
#####################################################
### LIST exercise
GET https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints
Authorization: Bearer {{accessToken}}
Accept: application/json
Этот код вызывает конечную точку list для отображения количества шагов, зарегистрированных пользователем в его учетной записи Fitbit. В ответе будет возвращено количество шагов за каждую минуту, аналогично конечной точке Activity Intraday веб-API Fitbit v1.
Для выполнения вызова нажмите ссылку «Отправить запрос» для конечной точки GET. Ваш ответ должен выглядеть примерно так:
{
"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": ""
}
Многие конечные точки поддерживают параметры запроса для фильтрации или пагинации. Например, для упражнений поддерживается фильтр interval.civil_start_time . Добавьте следующий запрос к Codelab.http , чтобы вывести список упражнений в определенном временном диапазоне:
### 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. Поздравляем!
Поздравляем!
Вы завершили базовый практический урок и успешно научились использовать Visual Studio Code и расширение Rest Client для тестирования авторизации OAuth 2.0 и выполнения вызовов к конечным точкам Google Health API. Теперь вы можете добавить дополнительные конечные точки так же, как и в начале раздела «Получение данных с помощью метода List» .
Мы надеемся, что вам понравится создавать приложения, интегрирующиеся с экосистемой Google Health API. Для получения дополнительной информации ознакомьтесь с другими конечными точками Google Health API в справочной документации и узнайте больше о Google OAuth 2.0 для веб-серверных приложений .