def google_login(request):
"""
1. Receive google token from google's signin callback.
2. Get token's email & get/create a user against it.
3. Mark the user as logged in.
"""
# Exchange auth code for access token, refresh token, and ID token
auth_code = request.POST['authCode']
credentials = client.credentials_from_clientsecrets_and_code(
settings.CLIENT_SECRET_FILE,
['https://www.googleapis.com/auth/drive', 'profile', 'email'],
auth_code)
email = credentials.id_token['email']
guser_id = credentials.id_token['sub']
username = email.split('@')[0]
try:
user = User.objects.get(email=email)
except:
user = User(username=username, email=email)
user.save()
googleuser, created = GoogleUser.objects.get_or_create(user=user)
googleuser.access_token = credentials.access_token
googleuser.refresh_token = credentials.refresh_token
googleuser.guser_id = guser_id
googleuser.save()
login(request, user)
return JsonResponse({"success": True})
评论列表
文章目录