def oauth2callback(request):
auth_code = request.GET['code']
print auth_code
credentials = client.credentials_from_clientsecrets_and_code(
settings.CLIENT_SECRET_FILE,
['https://www.googleapis.com/auth/drive', 'profile', 'email'],
auth_code,
redirect_uri=settings.HOST_ADDR+'/oauth2callback')
# credentials = flow.step2_exchange(auth_code)
print credentials.id_token
email = credentials.id_token['email']
guser_id = credentials.id_token['sub']
print credentials.id_token
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)
state = request.GET.get('state')
if state:
param = state
else:
param = ''
redirect_uri = '/?' + param
return HttpResponseRedirect(redirect_uri)
评论列表
文章目录