views.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:hexopress 作者: joelewis 项目源码 文件源码
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})
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号