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)
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)
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)
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)
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)