Рейтинг:0

Ошибка несоответствия URI перенаправления из Google OAuth для приложения flask

флаг lu

У меня есть веб-приложение Flask, размещенное в Google Cloud Run, которое размещено с https://mydomain.run.app.

Теперь я пытаюсь добавить к нему аутентификацию Google. Я создал API под реквизиты для входа в ГКП. я отдал https://mydomain.run.app/авторизовать в URI перенаправления, но когда я попытался войти в систему из своего приложения, оно выдает ошибку несоответствия перенаправления. И ошибка показывает мне http://mydomain.run.app/авторизовать. Несоответствие – это https и http Когда я попытался указать http в учетных данных uri, меня выдает

Недопустимое перенаправление: это приложение имеет статус публикации «В разработке». URI должен использовать https:// в качестве схемы.

@app.route('/логин/гугл')
защита google_login():
    google = oauth.create_client('google')
    redirect_uri = url_for('авторизовать', _external=True,_scheme='https')
    вернуть google.authorize_redirect(redirect_uri)

@app.route('/авторизовать')
деф авторизовать():
    google = oauth.create_client('google')  
    токен = google.authorize_access_token()  
    resp = google.get('информация о пользователе')  
    user_info = соотв.json()
    пользователь = oauth.google.userinfo() 
    сеанс['профиль'] = user_info
    сеанс.постоянный = Истина  
    вернуть перенаправление ('/ select')

Затем я узнал, что само мое приложение отправляет только HTTP-запрос, поэтому я попытался добавить _scheme='https' в url_for при перенаправлении, но теперь я получаю authlib.integrations.base_client.errors.MismatchingStateError: mismatching_state: CSRF Внимание! Состояние не равно запросу и ответу. ошибка. Я изменил свой секретный ключ на статическую строку вместо случайных чисел, которые я получил из других ответов. Но решить эту проблему пока не получается.

Рейтинг:0
флаг cn

Перед вашим сервисом Cloud Run находится GFE (Google FrontEnd). Ваше приложение подключается к GFE с помощью HTTPS или перенаправляется на HTTPS, если оно подключается с помощью HTTP.GFE подключается к вашему приложению по протоколу HTTP.

Ваше приложение считает, что клиент подключен с использованием HTTP, поэтому отвечает URL-адресами http://. Вам необходимо обработать X-Forwarded-Proto, чтобы определить метод подключения клиента, а затем ответить правильным URL-адресом HTTPS. смотреть на ПроксиФикс промежуточное ПО или подобное.

флаг lu
Спасибо за подробное объяснение. Но все же я получаю authlib.integrations.base_client.errors.MismatchingStateError: mismatching_state: CSRF Warning! Состояние не равно запросу и ответу. ошибка. Будет ли это связано с версией authlib? Как только я изменил _scheme, он дает мне только URL-адрес https.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.