Настройте Google Cloud и OAuth.

Доступ к API Google Health предоставляется через Google Cloud. Для включения API и авторизации учетной записи Google вам потребуется проект Google Cloud.

Независимо от того, являетесь ли вы уже разработчиком API Fitbit или только начинаете работать с API Google Health, вам необходимо выполнить этот шаг, чтобы совершать вызовы к API.

Создайте проект и OAuth-клиент.

Воспользуйтесь кнопкой «Включить API и получить идентификатор клиента OAuth 2.0» , чтобы активировать API Google Health и получить идентификатор клиента OAuth 2.0:

  1. Если у вас уже есть проект Google Cloud, который вы хотите использовать для Google Health API, сначала убедитесь, что вы вошли в учетную запись администратора этого проекта. Затем выберите существующий проект из списка доступных проектов после нажатия кнопки. В противном случае создайте новый проект.
  2. При запросе вопроса «Откуда вы звоните?» выберите «Веб-сервер ».
  3. В поле «Авторизованные URI перенаправления» введите https://www.google.com . Для получения кода авторизации с использованием OAuth 2.0 требуется указать URI перенаправления.
  4. После завершения настройки скопируйте значения идентификатора клиента OAuth 2.0 и секретного ключа клиента, а затем загрузите JSON-файл с учетными данными на свой локальный компьютер .
Включите API и получите идентификатор клиента OAuth 2.0.

Если вы хотите настроить свой проект Google Cloud вручную, проверить настройку и повторно получить свои учетные данные:

  1. Включите Google Health API на странице включения API .
  2. Получите идентификатор клиента OAuth 2.0 на странице «Учетные данные» .

Для получения дополнительной информации о настройке OAuth 2.0 с помощью консоли Google см. раздел «Использование OAuth 2.0 для доступа к API Google» .

Добавить тестовых пользователей

По умолчанию вновь созданные OAuth-клиенты находятся в непроверенном состоянии с ограничением в 100 пользователей как для тестирования, так и для производственной среды. Чтобы включить авторизацию в этот период, необходимо вручную добавить адрес электронной почты каждого пользователя в список тестовых пользователей в конфигурации проекта.

Обновите список тестовых пользователей на странице «Аудитория» :

  1. На этой странице вы должны увидеть, что в поле «Статус публикации» установлено значение «Тестирование », а в поле «Тип пользователя» — «Внешний ».
  2. В разделе «Тестовые пользователи» нажмите «+ Добавить пользователей» . Введите адреса электронной почты всех тестовых пользователей, которым должно быть разрешено предоставлять вашему приложению разрешение на доступ к их медицинским данным.
  3. Нажмите « Сохранить ».

Для поддержки более 100 пользователей с помощью API Google Health требуется проведение независимой проверки безопасности. Дополнительную информацию можно найти в Справочном центре по проверке приложений OAuth .

Добавить области видимости

На странице «Доступ к данным» необходимо указать области действия, к которым вашему клиенту разрешено обращаться:

  1. На этой странице нажмите «Добавить или удалить области действия» .
  2. В столбце API найдите "Google Health API". Выберите необходимые для вашего приложения области действия.
  3. После выбора всех необходимых областей действия нажмите кнопку «Обновить» , чтобы вернуться на страницу «Доступ к данным».
  4. Нажмите « Сохранить ».

Вы завершили настройку своего идентификатора клиента и теперь можете совершать вызовы к API Google Health.

Обновить области действия

Вы можете предложить пользователю повторно авторизовать ваше приложение, установив параметр prompt в значение consent в запросе на аутентификацию. Если prompt=consent включен, экран подтверждения согласия отображается каждый раз, когда ваше приложение запрашивает авторизацию областей доступа, даже если все области доступа были ранее предоставлены вашему проекту Google API.

Чтобы добавить или изменить области действия с помощью параметра prompt=consent , выполните следующие действия:

  1. Составьте полный список областей действия (Scopes) , необходимых вашему приложению. Он должен включать как существующие области действия, так и любые новые, которые вам необходимо добавить.

  2. Измените параметр scope в URL-адресе авторизации, чтобы включить обновленный список значений scope, разделенных пробелами.

  3. Добавьте prompt=consent к параметрам URI аутентификации. Это заставит сервер авторизации запросить у пользователя согласие перед возвратом информации вашему клиенту.

    В следующем примере показан HTTPS GET-запрос к конечной точке авторизации OAuth 2.0 от Google, запрашивающий несколько областей действия с добавлением prompt=consent :

    https://accounts.google.com/o/oauth2/v2/auth?client_id=client-id&redirect_uri=redirect-uri&response_type=code&access_type=offline&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly%20https://www.googleapis.com/auth/googlehealth.sleep.readonly&prompt=consent
  4. После перехода по обновленной ссылке пользователь увидит страницу согласия со списком всех запрашиваемых областей действия. После нажатия пользователем кнопки «Продолжить» или «Разрешить» вы получите новый код авторизации, который можно обменять на токены, охватывающие полный набор областей действия.

    Добавляйте prompt=consent только при необходимости, например, когда нужно получить новый токен обновления или когда изменились запрашиваемые области действия.

Библиотеки клиента OAuth2

Список доступных клиентских библиотек OAuth2, используемых для интеграции с популярными фреймворками, можно найти в статье «Использование OAuth 2.0 для доступа к API Google» .

Токены обновления

Для обеспечения долговременного доступа к API Google без необходимости постоянной повторной аутентификации пользователей ваше приложение должно использовать токен обновления. Подробную информацию о реализации, включая необходимые HTTP-запросы и параметры, см. в документации платформы идентификации Google .

Чтобы обменять токен обновления на токен доступа, выполните HTTPS POST-запрос к конечной точке Google OAuth 2.0 для получения токенов. В следующем фрагменте кода показан пример запроса и ответа:

Запрос

curl -L -X POST 'https://oauth2.googleapis.com/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'client_id=client-id&client_secret=client-secret&refresh_token=refresh-token&grant_type=refresh_token'

Ответ

{
  "access_token": "access-token",
  "expires_in": 3599,
  "scope": "scope-list",
  "token_type": "Bearer",
  "refresh_token": "refresh-token",
  "refresh_token_expires_in": 112154
}

Поведение токена во время тестирования

Учитывайте, как работают токены обновления в зависимости от статуса публикации вашего проекта в Google Cloud:

  • Режим тестирования: Если для экрана согласия OAuth установлен статус публикации «Тестирование», выдаваемые токены обновления являются временными и истекают через 7 дней. В течение этого периода вы будете получать один токен обновления, который остается действительным и может быть использован для получения новых токенов доступа до истечения срока его действия.
  • Опубликованный режим: После перевода вашего приложения в статус «В производстве» токены обновления, как правило, не истекают, если только они не отозваны или не остаются неиспользованными в течение длительного периода (обычно шесть месяцев).

Для обеспечения бесперебойной работы приложения убедитесь, что вы опубликовали его до того, как оно будет перенесено в рабочую среду, чтобы избежать истечения срока действия токенов через 7 дней.