|
12345678910111213141516171819202122232425262728293031323334 |
-
-
- from django.shortcuts import redirect
- from google.oauth2 import id_token
- from django.conf import settings
- from django.urls import reverse_lazy
- import requests
- from google.auth.transport import requests as google_requests
-
- def login(request):
- # Redirect the user to the Google authentication URL
- redirect_uri = request.build_absolute_uri(reverse_lazy('google_auth:callback'))
- authorization_url = f'https://accounts.google.com/o/oauth2/auth?response_type=code&client_id={settings.GOOGLE_OAUTH2_CLIENT_ID}&redirect_uri={redirect_uri}&scope=openid%20email%20profile'
- return redirect(authorization_url)
-
- def callback(request):
- authorization_code = request.GET.get('code')
- token_url = 'https://oauth2.googleapis.com/token'
- redirect_uri = request.build_absolute_uri(reverse_lazy('google_auth:callback'))
- token_request_data = {
- 'code': authorization_code,
- 'client_id': settings.GOOGLE_OAUTH2_CLIENT_ID,
- 'client_secret': settings.GOOGLE_OAUTH2_CLIENT_SECRET,
- 'redirect_uri': redirect_uri,
- 'grant_type': 'authorization_code'
- }
- token_response = requests.post(token_url, data=token_request_data)
- token_response_data = token_response.json()
- id_token_data = id_token.verify_oauth2_token(
- token_response_data['id_token'],
- google_requests.Request(),
- settings.GOOGLE_OAUTH2_CLIENT_ID
- )
- return redirect('http://127.0.0.1:8000')
|