Мое приложение требует согласия пользователя на использование данных активности из его учетной записи Strava (Strava - социальный сервис для спортсменов).
Strava использует для этого поток OAuth, поэтому пользователь входит в Strava и дает свое согласие.и Strava перенаправляет на предопределенный URL-адрес с кодом, добавленным в строку запроса, которую затем можно обменять на токен доступа с помощью другого запроса:
def strava_redirects_to_this_view(request):
#strava redirects to this view after authentication, with code in query string
#get tokens
code = request.GET.get('code', '') # extract code from redirect URL query string
access_token = exchange_code_for_token(code) # custom function to make exchange request
Я хочу, чтобы мое другое приложение - запущенное на другом сервере - получало данныетолько аутентифицированный пользователь через API.
Однако я не знаю, как ограничить вывод API, чтобы он содержал только данные текущего аутентифицированного пользователя.
В настоящее время мой просмотр API запрашивает вседанные (действия), независимо от пользователя:
class ListActivitiesView(generics.ListAPIView):
queryset = Activity.objects.all()
serializer_class = ActivitySerializer
Я знаю, что мог бы ограничить набор запросов только зарегистрированным пользователем, если у меня есть регистрация пользователя в моем приложении, но я бы предпочел не иметь другой регистрации в качествепользователь уже должен войти в Strava.
Как бы я ограничил queryset
включением только текущего пользователя, прошедшего аутентификацию OAuth?Может ли здесь помочь python-social-auth
с бэкэндом Strava?