utils.py 1.2 KB

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