def callback(self, auth_code): if auth_code is not None: data = { 'code': auth_code, 'client_id': self.consumer_id, 'client_secret': self.consumer_secret, 'scope': 'https://www.googleapis.com/auth/plus.login', 'redirect_uri': self.get_callback_url(), 'grant_type': 'authorization_code' } r = requests.post('https://www.googleapis.com/oauth2/v4/token', data=data) credentials = json.loads(r.text) print(r.text) if credentials['access_token']: url = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token={}'.format( credentials['access_token']) data = json.loads(requests.get(url).text) user = User.query.filter_by(email=data['email']).first() if user: if user.type_user == 'fb': response = { 'message': 'User already exists. Please Log in with facebook' } return json.dumps(response) else: user.access_token_google = credentials['access_token'] user.expires_in_google = credentials['expires_in'] save_changes(user) return json.dumps(generate_token(user)) else: new_user = User( public_id=str(uuid.uuid4()), email=data['email'], registered_on=datetime.datetime.utcnow(), access_token_google=credentials['access_token'], expires_in_google=credentials['expires_in'], type_user='******') save_changes(new_user) return json.dumps(generate_token(new_user)) return r.text return None
def getData(self, access_token): url = 'https://graph.facebook.com/me?fields=id,email&access_token={}'.format( access_token) data = json.loads(requests.get(url).text) user = User.query.filter_by(email=data['email']).first() if user: if user.type_user == 'google': response = { 'message': 'User already exists. Please Log in with google' } return json.dumps(response) else: return json.dumps(generate_token(user)) else: response = { 'message': 'User already exists. Please Log in with facebook' } return json.dumps(response)
def getData(self, access_token): url = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token={}'.format( access_token) data = json.loads(requests.get(url).text) user = User.query.filter_by(email=data['email']).first() if user: if user.type_user == 'fb': response = { 'message': 'User already exists. Please Log in with fb' } return json.dumps(response) else: return json.dumps(generate_token(user)) else: response = { 'message': 'User already exists. Please Log in with google' } return json.dumps(response)
def post(self): """Creates a new User """ data = request.json if data.get('email', None): the_user = get_a_user_by_email(data.get('email', None)) if isinstance(the_user, User): response_object = { 'status': 'fail', 'message': 'Email already registered', } return response_object, 400 feedback = save_new_user(data=data) # todo verify user if not feedback.get('error', None): the_user = get_a_user_by_id(feedback['publicId']) token = generate_token(the_user) if not isinstance(token, dict): response_object = { 'status': 'success', 'message': 'User Successfully registered', 'body': feedback, 'Authorization': token.decode() } return response_object, 201 else: response_object = { 'status': 'fail', 'message': token.get('error', None), } return response_object, 400 else: response_object = { 'status': 'fail', 'message': feedback.get('error', None), } return response_object, 400