2017-08-28 171 views
0

我很努力地使用django检索访问令牌。 我想从使用oAuth的用户获取访问令牌。Google OAUTH使用django获取访问令牌

这是我到目前为止设置的。

class GoogleExhangeViewSet(viewsets.ViewSet): 
    queryset = User.objects.all() 


    @list_route(
     methods=["GET"]) 

    def auth(self,request,pk=None): 
     client_id = '' 
     client_secret = '' 
     flow = OAuth2WebServerFlow(client_id=client_id, 
            client_secret=client_secret, 
            scope='https://www.googleapis.com/auth/calendar', 
            redirect_uri='http://localhost:8001/api/googleAuth/complete') 
     auth_uri = flow.step1_get_authorize_url() 
     return HttpResponseRedirect(auth_uri) 

    def complete(self, request, pk=None): 
     client_id = '' 
     client_secret = '' 
     host = Site.objects.get_current().name 
     flow = OAuth2WebServerFlow(client_id=client_id, 
            client_secret=client_secret, 
            scope='https://www.googleapis.com/auth/calendar', 
            redirect_uri='http://localhost') 
     credentials = flow.step2_exchange(request.GET.get('code')) 
     return Response(status=200,data=credentials.access_token) 

下urls.py我

api_router.register(r'api/googleAuth', GoogleExhangeViewSet) 

这是我用下面的代码 enter image description here

回答

0

正如你看到的错误得到的错误,你遇到一个redirect_uri_mismatchBad Request如果你是使用错误的重定向uri。从link开始,如果在auth和token请求之间不匹配,redirect_uri_mismatch将被抛出。

其他参考:如果你想使用Access Token反对Django的认证系统认证用户

这里有一个tutorial

您需要一个能够释放访问令牌的全功能OAuth2提供程序:请按照part 1 of the tutorial中的步骤操作。要启用OAuth2令牌认证,您需要一个检查请求内部令牌的中间件和一个负责令牌验证的自定义认证后端。

相关问题