def authorized_with_facebook(response): result = {'auth': False} if response is not None: access_token = response['access_token'] # expires = response['expires'] session['facebook_token'] = ( access_token, OAUTH_CREDENTIALS['facebook']['secret'] ) get = facebook.get('me?fields=id,name,picture,email') status = get.status result['get_status'] = status if status == 200: data = get.data user = User.query.filter_by(email=data['email']).first() if user is None: result['user_status'] = 'new' user = User( name=data['name'], email=data['email'], key=Tools.generate_hash(data), token=access_token, photo=data['picture']['data']['url'], auth=AUTH['facebook'], last_seen=str(datetime.utcnow()), info=json.dumps(data) ) db.session.add(user) db.session.commit() else: result['user_status'] = 'old' equal = True new = { 'name': data['name'], 'token': access_token, 'photo': data['picture']['data']['url'] } for key, value in new.iteritems(): attr = getattr(user, key) if attr != value: setattr(user, key, value) equal = False if not equal: result['user_status'] = 'updated' db.session.add(user) db.session.commit() result['user'] = { 'name': user.name, 'email': user.email, 'key': user.key, 'photo': user.photo, 'info': user.info } remember_me = False if 'remember_me' in session: remember_me = session['remember_me'] session.pop('remember_me', None) session['authorized'] = True session['active'] = True session['anonymous'] = False result['auth'] = login_user(user, remember=remember_me) return redirect(url_for('index'))