Как получать еженедельные данные Google Fit Rest API

Я пытаюсь получить сводное количество шагов за неделю из Google Fit, используя их REST Api, следуя их документация, но данные точки возвращаются пустыми. Я включил местоположение чтения и область действия для токена доступа. Мой код:

import json
import requests

api_url = "https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate"

access_token = ""

headers = {
  "Authorization": "Bearer {}".format(access_token),
  "Content-Type": "application/json;encoding=utf-8"
  }

body = {
  "aggregateBy": [{
    "dataTypeName": "com.google.step_count.delta",
    "dataSourceId": "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps"
  }],
  "bucketByTime": { "durationMillis": 86400000 },
  "startTimeMillis": 1438705622000,
  "endTimeMillis": 1439310422000
}


response = requests.post(api_url, data=json.dumps(body), headers=headers)

print(response.text)

person Oleg    schedule 12.11.2020    source источник


Ответы (1)


  "aggregateBy": [{
    "dataTypeName": "com.google.step_count.delta",
    "dataSourceId": "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps"
  }],

Ваш aggregateBy указывает как имя типа данных, так и идентификатор источника данных; последний имеет приоритет, поэтому он будет возвращать данные только в том случае, если поток estimated_steps содержит данные на сервере.

Я предлагаю удалить dataSourceId, тогда будет использоваться источник данных по умолчанию для step_count.delta.

person Andy Turner    schedule 12.11.2020
comment
Я все еще получаю пустой словарь точек после удаления dataSourceId - person Oleg; 13.11.2020
comment
У вас есть данные в источнике данных, если вы просто попытаетесь их прочитать без агрегирования? - person Andy Turner; 13.11.2020
comment
Да, я использую Google Fit ежедневно и могу просматривать данные о своей активности из приложения. - person Oleg; 13.11.2020
comment
Хорошо, но удалось ли вам отправить запрос на получение этих данных без агрегирования через REST API? - person Andy Turner; 13.11.2020
comment
Я не могу найти конечную точку API Google Fit для доступа к неагрегированным данным по количеству моих шагов. Не могли бы вы направить меня? - person Oleg; 13.11.2020
comment
developers.google.com/fit/rest/v1/ reference / users / dataSources / - вы можете попробовать это в документации, а затем вставить сюда URL-адрес, чтобы я мог увидеть, что вы пробовали. - person Andy Turner; 13.11.2020
comment
https://www.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.activity.segment:com.google.android.gms:HMD Global:Nokia 3.2:b5dc902a:activity_from_steps/datasets/1438705622000-1439310422000 Это запрос, который я использовал для запроса источника данных. Ответ, который я получаю с этого URL: { "minStartTimeNs": "1438705622000", "maxEndTimeNs": "1439310422000", "dataSourceId": "derived:com.google.activity.segment:com.google.android.gms:HMD Global:Nokia 3.2:b5dc902a:activity_from_steps", "point": [] } - person Oleg; 13.11.2020
comment
1438705622000 - обратите внимание, что это в нано - это четверг, 1 января 1970, 01:23:58 AM BST. Кроме того, этот запрос относится к источнику данных сегмента активности, а не к шагам, о которых вы спрашиваете. - person Andy Turner; 13.11.2020
comment
(Даже в миллисекундах время окончания 1439310422000 - вторник, 11 августа 2015 г., 17:27:02 по московскому времени. Это было давно. Вы уверены, что ожидаете данных?) - person Andy Turner; 13.11.2020
comment
Большое вам спасибо, я изменил тело миллисекунды и смог получить данные о количестве шагов, которые мне нужны. Моя проблема заключалась в том, что я использовал время, указанное в документации Google Fit. - person Oleg; 14.11.2020