Выполните http-вызов в python
Я пытаюсь вызвать google fit API с помощью python, но пример для сессий у меня не работает. Пример от google
GET https://fitness.googleapis.com/fitness/v1/users/me/sessions?activityType=97 HTTP/1.1
Authorization: Bearer [YOUR_ACCESS_TOKEN]
Accept: application/json
Мой код
@api_view(['GET'])
def googleFitView(request):
social_token = SocialToken.objects.get(account__user=2)
token=social_token.token
url_session= "https://fitness.googleapis.com/fitness/v1/users/me/sessions"
headers = {
"Authorization": "Bearer {}".format(token),
"Accept": "application/json"
}
session_call = requests.post(url_session, headers=headers)
return Response(session_call)
Если я обращаюсь к другому API google fit, он работает, так что аутентификация не является проблемой. Я также следовал документации, и вызов сессии не требует тела
@api_view(['GET'])
def googleFitView(request):
social_token = SocialToken.objects.get(account__user=2)
token=social_token.token
url = "https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate"
headers = {
"Authorization": "Bearer {}".format(token),
"Content-Type": "application/json;encoding=utf-8",
}
body = {
"aggregateBy": [{
"dataTypeName": "com.google.activity.segment",
}],
"startTimeMillis": 1634767200000,
"endTimeMillis": 1634853600000
}
respo = requests.post(url, data=json.dumps(body), headers=headers)
return Response(respo)
Похоже, что вы хотите сделать вызов GET, но вы вызываете POST в нижеприведенном методе googleFitView
@api_view(['GET'])
def googleFitView(request):
social_token = SocialToken.objects.get(account__user=2)
token=social_token.token
url_session= "https://fitness.googleapis.com/fitness/v1/users/me/sessions"
headers = {
"Authorization": "Bearer {}".format(token),
"Accept": "application/json"
}
# session_call = requests.post(url_session, headers=headers) -- This is a post call.
session_call = requests.get(url_session, headers=headers)
return Response(session_call)