utils.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from django.utils import timezone
  2. from requests import post
  3. from django.conf import settings
  4. from .models import UserModel
  5. CLIENT_SECRETS_FILE = "client_secrets.json"
  6. def has_expired(credentials):
  7. expiry_time = credentials['access_token']
  8. return str(timezone.datetime.now()) > expiry_time
  9. def get_access_token(request):
  10. uid = request.user.id
  11. user = UserModel.objects.filter(pk=uid).first()
  12. if user:
  13. refresh_token = user.refresh_token
  14. else:
  15. return None
  16. client_id = settings.CLIENT_ID
  17. client_secret = settings.CLIENT_SECRET
  18. token_uri = "https://oauth2.googleapis.com/token"
  19. print(client_id, client_secret, token_uri)
  20. params = {
  21. "grant_type": "refresh_token",
  22. "client_id": client_id,
  23. "client_secret": client_secret,
  24. "refresh_token": refresh_token
  25. }
  26. response = post(token_uri, data=params).json()
  27. access_token = response['access_token']
  28. expires_in = response['expires_in']
  29. expired_at = timezone.datetime.now() + timezone.timedelta(seconds=expires_in)
  30. expiry = str(expired_at)
  31. credentials = {
  32. 'access_token': access_token,
  33. 'expiry': expiry
  34. }
  35. request.session['credentials'] = credentials
  36. return response['access_token']