def callback(): # Redirect user to home page if already logged in. if current_user is not None and current_user.is_authenticated: return redirect(url_for('restaurants')) if 'error' in request.args: if request.args.get('error') == 'access_denied': flash('You denied access.') return flash('Error encountered') return if 'code' not in request.args and 'state' not in request.args: return redirect(url_for('login')) else: # Execution reaches here when user has # successfully authenticated our app. print 'my still session', session google = get_google_auth(state=session['oauth_state']) try: token = google.fetch_token(Auth.TOKEN_URI, client_secret=Auth.CLIENT_SECRET, authorization_response=request.url) except HTTPError: return 'HTTPError occurred.' google = get_google_auth(token=token) resp = google.get(Auth.USER_INFO) if resp.status_code == 200: user_data = resp.json() email = user_data['email'] print 'my email', email user = db_session.query(User).filter_by(email=email).first() # print 'my google user', user.fetchall() if user is None: user = User() user.email = email user.username = user_data['name'] print(token) user.tokens = json.dumps(token) user.avatar = user_data['picture'] db_session.add(user) db_session.commit() login_user(user) return redirect(url_for('all_restaurants')) return 'Could not fetch your information.'