我的应用需要用户同意才能使用其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后端配合使用会对这里有帮助吗?