def facebook_authorized(resp): next_url = request.args.get('next') or '/' if resp is None or 'access_token' not in resp: return redirect(next_url) session['facebook_token'] = (resp['access_token'], '') data = facebook.get('/me').data profile_picture = 'https://graph.facebook.com/' + data['id'] + '/picture?width=1000' # profile_picture = facebook.get('/me/picture').data if 'id' in data and 'name' in data and 'email' in data and 'link' in data: provider_user_id = data['id'] name = data['name'] username = data['username'] user_email = data['email'] profile_url = data['link'] # profile_picture = profile_picture['url'] generated_name = str(uuid.uuid1()) + '.jpg' user = User.query.filter(User.email == user_email).first() if not user: user = users.create_user( name=name, email=user_email, password=None, active=True ) users.commit() current_user_id = str(user.id) folder_path = app.config['UPLOADS_FOLDER'] + '/user/' + current_user_id + '/' new_folder = os.path.dirname(folder_path) if not os.path.exists(new_folder): os.makedirs(new_folder) filepath = os.path.join(folder_path, generated_name) urllib.urlretrieve(profile_picture, filepath) new_photo = 'user/' + current_user_id + '/' + generated_name User.query.filter(User.id == user.id).update({User.photo: new_photo}) connection = Connection.query.filter(Connection.user_id == user.id, Connection.provider_id == 'facebook').first() if not connection: print "no prior connection" connection = Connection( user=user, provider_id='facebook', provider_user_id=provider_user_id, access_token=resp['access_token'], profile_url=profile_url, image_url=generated_name, full_name=name, display_name=username ) db.session.add(connection) db.session.commit() else: print "updating prior connection" connection.access_token = resp['access_token'] db.session.commit() if connection and login_user(user): users.commit() return redirect(next_url) return redirect("/login")
def facebook_authorized(resp): next_url = request.args.get('next') or '/' if resp is None or 'access_token' not in resp: return redirect(next_url) session['facebook_token'] = (resp['access_token'], '') data = facebook.get('/me').data profile_picture = 'https://graph.facebook.com/' + data[ 'id'] + '/picture?width=1000' # profile_picture = facebook.get('/me/picture').data if 'id' in data and 'name' in data and 'email' in data and 'link' in data: provider_user_id = data['id'] name = data['name'] username = data['username'] user_email = data['email'] profile_url = data['link'] # profile_picture = profile_picture['url'] generated_name = str(uuid.uuid1()) + '.jpg' user = User.query.filter(User.email == user_email).first() if not user: user = users.create_user(name=name, email=user_email, password=None, active=True) users.commit() current_user_id = str(user.id) folder_path = app.config[ 'UPLOADS_FOLDER'] + '/user/' + current_user_id + '/' new_folder = os.path.dirname(folder_path) if not os.path.exists(new_folder): os.makedirs(new_folder) filepath = os.path.join(folder_path, generated_name) urllib.urlretrieve(profile_picture, filepath) new_photo = 'user/' + current_user_id + '/' + generated_name User.query.filter(User.id == user.id).update( {User.photo: new_photo}) connection = Connection.query.filter( Connection.user_id == user.id, Connection.provider_id == 'facebook').first() if not connection: print "no prior connection" connection = Connection(user=user, provider_id='facebook', provider_user_id=provider_user_id, access_token=resp['access_token'], profile_url=profile_url, image_url=generated_name, full_name=name, display_name=username) db.session.add(connection) db.session.commit() else: print "updating prior connection" connection.access_token = resp['access_token'] db.session.commit() if connection and login_user(user): users.commit() return redirect(next_url) return redirect("/login")