2017-08-28 94 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令牌認證,您需要一個檢查請求內部令牌的中間件和一個負責令牌驗證的自定義認證後端。

相關問題