def oauth_callback(provider): if not current_user.is_anonymous: return redirect(url_for('index')) oauth = OAuthSignIn.get_provider(provider) result = oauth.callback() if result.get('error'): # Need a valid email address for user identification return redirect( url_for('index', error=result['error'] + ": " + result['error_description'])) app.user = User.find_or_create_by_email(result['email']) app.user.username = result['name'] app.user.family_name = result['family_name'] app.user.nickname = result['nickname'] app.user.preferred_username = result['preferred_username'] # Log in the user, by default remembering them for their next visit # unless they log out. login_user(app.user, remember=True) return redirect(result['next_page'])