показывает слишком много перенаправлений в Google - PullRequest
0 голосов
/ 29 мая 2020

Я использую 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'))
...