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['expiry']
  8. now = str(timezone.datetime.now())
  9. return now > expiry_time
  10. def get_access_token(request):
  11. uid = request.user.id
  12. user = UserModel.objects.filter(pk=uid).first()
  13. if user:
  14. refresh_token = user.refresh_token
  15. else:
  16. return None
  17. client_id = settings.CLIENT_ID
  18. client_secret = settings.CLIENT_SECRET
  19. token_uri = "https://oauth2.googleapis.com/token"
  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']