Я использую flask -dance для google oauth. Мое требование: если пользователь присутствует в базе данных, я позволю ему перейти на свой сайт. Если его нет в базе данных, я перенаправлю его обратно на страницу входа. Первая проблема, с которой я столкнулся, - это после входа в Google, если пользователь отсутствует в базе данных, я не могу выйти из его сеанса. поскольку он отсутствует в базе данных, он показывает слишком много перенаправления на ошибку Google. ниже мой код
@app.route('/google')
def google_login():
if not google.authorized:
return redirect(url_for('google.login'))
account_info = google.get('/oauth2/v1/userinfo')
account_info_json = account_info.json()
return '<h1>Your email is @{}'.format(account_info_json['email'])
@oauth_authorized.connect_via(google_blueprint)
def google_logged_in(blueprint, token):
account_info = blueprint.session.get('/oauth2/v1/userinfo')
if account_info.ok:
account_info_json = account_info.json()
username = account_info_json['email']
query = User.query.filter_by(username=username)
try:
user = query.one()
except NoResultFound:
return redirect(url_for('logout'))
login_user(user)
@app.route('/')
@login_required
def index():
return '<h1>You are logged in as {}</h1>'.format(current_user.username)
@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('index'))