예제 #1
0
파일: views.py 프로젝트: Tynes/starterKit
def github(request):
    access_token_url = 'https://github.com/login/oauth/access_token'
    users_api_url = 'https://api.github.com/user'

    print request.data

    params = {
        'client_id': request.data['clientId'],
        'redirect_uri': request.data['redirectUri'],
        'client_secret': settings.GITHUB_SECRET,
        'code': request.data['code']
    }

    # Step 1. Exchange authorization code for access token.
    r = requests.get(access_token_url, params=params)
    access_token = dict(parse_qsl(r.text))
    headers = {'User-Agent': 'starterKit'}

    # Step 2. Retrieve information about the current user.
    r = requests.get(users_api_url, params=access_token, headers=headers)
    profile = json.loads(r.text)


    profile["token"] = request.jwtauth
    current_user = request.jwtuser

    user = User.objects.get(pk=current_user.id)
    if user is None:
        print "NO USER!!"
        ### MAKE A NEW USER!!!

    if hasattr( user, 'useraccounts' ):
        print "HAS ACCOUNTS"
        accounts = user.useraccounts
        accounts.github = True
        accounts.github_code = request.data['code']
        accounts.github_token = access_token['access_token']
        accounts.github_id = profile["id"]
        accounts.github_name = profile["name"]
        accounts.github_login = profile["login"]
        accounts.github_email = profile["email"]
        accounts.save()
    else:
        print "NO ACCOUNTS"
        accounts = UserAccounts()
        accounts.user = user
        accounts.github = True
        accounts.github_code = request.data['code']
        accounts.github_token = access_token['access_token']
        accounts.github_id = profile["id"]
        accounts.github_name = profile["name"]
        accounts.github_login = profile["login"]
        accounts.github_email = profile["email"]
        accounts.save()
        user.useraccounts = accounts
        user.save()
        print user.useraccounts

    pprint(profile)
    return Response(profile)
예제 #2
0
def github(request):
    access_token_url = 'https://github.com/login/oauth/access_token'
    users_api_url = 'https://api.github.com/user'

    print request.data

    params = {
        'client_id': request.data['clientId'],
        'redirect_uri': request.data['redirectUri'],
        'client_secret': settings.GITHUB_SECRET,
        'code': request.data['code']
    }

    # Step 1. Exchange authorization code for access token.
    r = requests.get(access_token_url, params=params)
    access_token = dict(parse_qsl(r.text))
    headers = {'User-Agent': 'starterKit'}

    # Step 2. Retrieve information about the current user.
    r = requests.get(users_api_url, params=access_token, headers=headers)
    profile = json.loads(r.text)


    current_user = request.jwtuser

    user = User.objects.get(pk=current_user.id)
    if user is None:
        print "NO USER!!"
        ### MAKE A NEW USER!!!

    if hasattr( user, 'useraccounts' ):
        print "HAS ACCOUNTS"
        accounts = user.useraccounts
        accounts.github = True
        accounts.github_code = request.data['code']
        accounts.github_token = access_token['access_token']
        accounts.github_id = profile["id"]
        accounts.github_name = profile["name"]
        accounts.github_login = profile["login"]
        accounts.github_email = profile["email"]
        accounts.save()
    else:
        print "NO ACCOUNTS"
        accounts = UserAccounts()
        accounts.user = user
        accounts.github = True
        accounts.github_code = request.data['code']
        accounts.github_token = access_token['access_token']
        accounts.github_id = profile["id"]
        accounts.github_name = profile["name"]
        accounts.github_login = profile["login"]
        accounts.github_email = profile["email"]
        accounts.save()
        user.useraccounts = accounts
        user.save()
        print user.useraccounts

    profile["token"] = request.jwtauth
    pprint(profile)
    return Response(profile)
예제 #3
0
파일: views.py 프로젝트: Tynes/starterKit
def facebook(request):
    access_token_url = 'https://graph.facebook.com/v2.3/oauth/access_token'
    graph_api_url = 'https://graph.facebook.com/v2.3/me'

    # print request.data

    params = {
        'client_id': request.data['clientId'],
        'redirect_uri': request.data['redirectUri'],
        'client_secret': settings.FACEBOOK_SECRET,
        'code': request.data['code']
    }

    # Step 1. Exchange authorization code for access token.
    r = requests.get(access_token_url, params=params)
    access_token = json.loads(r.text)

    # Step 2. Retrieve information about the current user.
    r = requests.get(graph_api_url, params=access_token)
    profile = json.loads(r.text)


    profile["token"] = request.jwtauth
    current_user = request.jwtuser

    user = User.objects.get(pk=current_user.id)
    if user is None:
        print "NO USER!!"
        ### MAKE A NEW USER!!!

    # print len(params["code"])
    # print len(access_token)

    if hasattr( user, 'useraccounts' ):
        print "HAS ACCOUNTS"
        accounts = user.useraccounts
        accounts.facebook = True
        accounts.facebook_code = request.data['code']
        accounts.facebook_token = access_token['access_token']
        accounts.facebook_id = profile["id"]
        accounts.facebook_name = profile["name"]
        accounts.save()
    else:
        print "NO ACCOUNTS"
        accounts = UserAccounts()
        accounts.user = user
        accounts.facebook = True
        accounts.facebook_code = request.data['code']
        accounts.facebook_token = access_token['access_token']
        accounts.facebook_id = profile["id"]
        accounts.facebook_name = profile["name"]
        accounts.save()
        user.useraccounts = accounts
        user.save()
        print user.useraccounts

    print profile
    return Response(profile)
예제 #4
0
def google(request):
    access_token_url = 'https://accounts.google.com/o/oauth2/token'
    people_api_url = 'https://www.googleapis.com/plus/v1/people/me/openIdConnect'

    payload = {
        'client_id': request.data['clientId'],
        'redirect_uri': request.data['redirectUri'],
        'client_secret': settings.GOOGLE_SECRET,
        'code': request.data['code'],
        'grant_type': 'authorization_code'
    }

   # Step 1. Exchange authorization code for access token.
    r = requests.post(access_token_url, data=payload)
    token = json.loads(r.text)
    headers = {'Authorization': 'Bearer {0}'.format(token['access_token'])}

    # Step 2. Retrieve information about the current user.
    r = requests.get(people_api_url, headers=headers)
    profile = json.loads(r.text)

    current_user = request.jwtuser

    user = User.objects.get(pk=current_user.id)
    if user is None:
        print "NO USER!!"
        ### MAKE A NEW USER!!!

    if hasattr( user, 'useraccounts' ):
        print "HAS ACCOUNTS"
        accounts = user.useraccounts
        accounts.google = True
        accounts.google_code = request.data['code']
        accounts.google_token = token['access_token']
        accounts.google_id = profile["sub"]
        accounts.google_name = profile["name"]
        accounts.google_email = profile["email"]
        accounts.save()
    else:
        print "NO ACCOUNTS"
        accounts = UserAccounts()
        accounts.user = user
        accounts.google = True
        accounts.google_code = request.data['code']
        accounts.google_token = token['access_token']
        accounts.google_id = profile["sub"]
        accounts.google_name = profile["name"]
        accounts.google_email = profile["email"]
        accounts.save()
        user.useraccounts = accounts
        user.save()
        print user.useraccounts

    profile["token"] = request.jwtauth
    pprint(profile)
    return Response(profile)
예제 #5
0
def facebook(request):
    access_token_url = 'https://graph.facebook.com/v2.3/oauth/access_token'
    graph_api_url = 'https://graph.facebook.com/v2.3/me'

    print "request.user:"******"request.auth:", request.auth
    print "request.jwtuser:"******"request.jwtauth:", request.jwtauth

    params = {
        'client_id': request.data['clientId'],
        'redirect_uri': request.data['redirectUri'],
        'client_secret': settings.FACEBOOK_SECRET,
        'code': request.data['code']
    }

    # Step 1. Exchange authorization code for access token.
    r = requests.get(access_token_url, params=params)
    access_token = json.loads(r.text)

    # Step 2. Retrieve information about the current user.
    r = requests.get(graph_api_url, params=access_token)
    profile = json.loads(r.text)

    current_user = request.jwtuser
    user = User.objects.get(pk=current_user.id)
    if user is None:
        print "NO USER!!"
        ### MAKE A NEW USER!!!

    if hasattr( user, 'useraccounts' ):
        print "HAS ACCOUNTS"
        accounts = user.useraccounts
        accounts.facebook = True
        accounts.facebook_code = request.data['code']
        accounts.facebook_token = access_token['access_token']
        accounts.facebook_id = profile["id"]
        accounts.facebook_name = profile["name"]
        accounts.save()
    else:
        print "NO ACCOUNTS"
        accounts = UserAccounts()
        accounts.user = user
        accounts.facebook = True
        accounts.facebook_code = request.data['code']
        accounts.facebook_token = access_token['access_token']
        accounts.facebook_id = profile["id"]
        accounts.facebook_name = profile["name"]
        accounts.save()
        user.useraccounts = accounts
        user.save()
        print user.useraccounts

    profile["token"] = request.jwtauth
    pprint(profile)
    return Response(profile)