#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved. @AUTHOR: ASJRD019 @NAME: AnsjerFormal @software: PyCharm @DATE: 2020/3/18 9:38 @Version: python3.6 @MODIFY DECORD:ansjer dev @file: AppSetController.py @Contact: pzb3076@163.com """ import requests from Ansjer.config import SERVER_TYPE from Model.models import ApplicationModel from django.views.generic.base import View from Object.RedisObject import RedisObject from Object.TokenObject import TokenObject from Service.ModelService import ModelService from Service.CommonService import CommonService from django.http import JsonResponse from django.contrib import auth import time,json from Object.ResponseObject import ResponseObject # http://192.168.136.39:8000/login/oauth/authorize class ApplicationView(View): def get(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation', None) return self.validation(request.GET, operation) def post(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation', None) return self.validation(request.POST, operation) def validation(self, request_dict, operation): response = ResponseObject() token = request_dict.get('token', None) tko = TokenObject(token) if tko.code != 0: userID = tko.userID if operation == 'authorize': return self.do_authorize(request_dict, userID, response) elif operation == 'access_token': return self.do_token(request_dict, userID, response) elif operation == 'user': return self.do_user(request_dict, userID, response) else: return response.json(tko.code) else: return response.json(414) def do_authorize(self,request_dict, userID, response): state = request_dict.get("state", '') client_id = request_dict.get("client_id", '') response_type = request_dict.get("response_type", '') scope = request_dict.get("scope", '') redirect_uri = request_dict.get("redirect_uri", '') code = CommonService.encrypt_data(32) print(redirect_uri) redirect_uri = redirect_uri + '?code=' + code + '&state=' + state return response.json(0, res=redirect_uri) # 增加对code和client_id的校验代码,返回access_token和refresh_token def do_token(self,request_dict, userID, response): code = request_dict.get("code", None) client_id = request_dict.get("client_id", None) refresh_token = request_dict.get("refresh_token", None) print('refresh_token:') print(refresh_token) print('code:') print(code) print('client_id:') print(client_id) access_token = CommonService.encrypt_data(randomlength=32) refresh_token = CommonService.encrypt_data(randomlength=32) res_json = { "access_token": access_token, "token_type": "bearer", "expires_in": 3600, "refresh_token": refresh_token } print(res_json) return JsonResponse(res_json) def do_user(self, request_dict, userID, response): code = request_dict.get("code", None) client_id = request_dict.get("client_id", None) refresh_token = request_dict.get("refresh_token", None) print('refresh_token:') print(refresh_token) print('code:') print(code) print('client_id:') print(client_id) access_token = CommonService.encrypt_data(randomlength=32) refresh_token = CommonService.encrypt_data(randomlength=32) res_json ={ "login": "pengzhibo168", "id": 1, "node_id": "MDQ6VXNlcjE=", "gravatar_id": "", "type": "User", "name": "monalisa octocat", "company": "asdfda", "location": "San Francisco", "email": "sadf@sadf.com", "bio": "There once was...", "public_repos": 2, "public_gists": 1, "followers": 20, "following": 0, "created_at": "2008-01-14T04:33:35Z", "updated_at": "2008-01-14T04:33:35Z" } print(res_json) return JsonResponse(res_json)