Как читать данные Google Fit с помощью Tasker?

Как я могу прочитать данные из Google Fit в переменную с помощью Tasker?

Более конкретно, я хочу прочитать, например. мой текущий счетчик шагов на сегодня, который подсчитывается моим телефоном + фитнес-трекером и передается в Google Fit. Моя цель - иметь переменную, содержащую это число, чтобы затем работать с ней. Я читал об API истории Google Fit, но не знаю, как получить к нему доступ через Tasker.


person Dominic    schedule 27.03.2015    source источник


Ответы (1)


Я понял это после дня проб и ошибок. Это довольно «сложная» процедура.

Подготовка:

Шаг 1. Создайте проект на https://console.developers.google.com/project и получить идентификатор клиента, а также секрет. (Есть много более подробных руководств по этому поводу). Проект должен быть настроен как приложение, а не как веб-приложение. Вам также необходимо добавить urn:ietf:wg:oauth:2.0:oob к URL-адресам перенаправления. (http://localhost может остаться там)

Шаг 2. Установите подключаемый модуль RESTask для Tasker.

Шаг 3 – перейдите к https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/fitness.activity.read&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&client_id=YOUR_CLIENT_ID. Там вы получите код. Скопируйте этот код.

Шаг 4. Создайте задачу, которая будет использовать действие подключаемого модуля RESTask. Настройте его на:

Request Type: POST
Host: https://accounts.google.com/o/oauth2/token

Проверить Enable custom body

Установите пользовательское тело на: code=%THE_COPIED_CODE&client_id=%YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code

Переключитесь на Header и нажмите Add more:

Name: Content-Type
Value: application/x-www-form-urlencoded

Вы получите код возврата 200, если все прошло нормально. Разделите возвращенный ответ (%rtres) на splitter ". Сохраните свой токен, который находится в пределах %rtres4, и ваш токен обновления, который находится в пределах %rtres14.

Подсчет шагов

Шаг 1. Прежде чем что-либо получать, вам необходимо иметь действующий токен. Токен, полученный во время подготовки, действителен только в течение ограниченного периода времени. Вы можете запросить новый токен с токеном обновления, который вы должны были сохранить. Чтобы получить работающий токен, повторите Шаг 4 с другим телом:

client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&refresh_token=YOUR_REFRESH_TOKEN&grant_type=refresh_token

Повторите разбиение, и новый токен будет сохранен в %rtres4.

Шаг 2. Теперь вы, наконец, можете получить ценные данные. Сначала определите время начала и окончания (сохраненное в %start и %end). Обратите внимание, что они должны быть в наносекундах. Вы можете использовать %TIMEMS*1000000. Поэтому добавьте действие RESTask со следующей конфигурацией:

Request Type: GET
Host: https://www.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.step_count.delta:com.google.android.gms:estimated_steps/datasets/%start-%end

Не проверять Enable custom body

Переключитесь на Header и нажмите Add more (3 раза):

Name: Content-Type
Value: application/json

Name: Authorization
Value: Bearer YOUR_TOKEN

Name: X-JavaScript-User-Agent
Value: Google APIs Explorer

Вы получите код возврата 200, если все прошло нормально. Количество шагов будет возвращено в ответе.

Не стесняйтесь делать с этими данными все, что хотите. Чтобы получить полное количество шагов, вам может потребоваться суммировать значения. (Разделите ответ и повторите цикл for). Я решил передать подсчет шагов в виджет Zooper, чтобы иметь свой собственный виджет подсчета шагов Google Fit на рабочем столе.

person Dominic    schedule 27.03.2015
comment
Я получаю redirect_uir_mismatch. Какой URL я должен указать при создании идентификатора клиента? - person Moritz Schmitz v. Hülst; 28.04.2015
comment
@MoritzSchmitzv.Hülst Попробуйте добавить: urn:ietf:wg:oauth:2.0:oob - person Dominic; 29.04.2015
comment
Я не могу установить URL-адреса перенаправления. Google изменил веб-сайт, и он отличается от других руководств. Я продолжаю получать ошибку 401 без перенаправления. - person gavsiu; 01.12.2015