コード例 #1
0
 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
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
    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