oauth2client.flask_util redirect_uri в http вместо https

Я знаю, что oauth2client устарел, но тем не менее мы его используем. Когда я запускаю процесс oauth2 в Google, он всегда пытается перенаправить меня на HTTP-версию моего приложения.

Я видел, что метод url_for Flask должен основываться на контексте запроса, и когда я запускаю процесс (т.е. вызываю URL-адрес oauth2authorize), я нахожусь в HTTPS. Поэтому я не понимаю, почему он передает redirect_uri в HTTP...

Это код Flask

flow = client.OAuth2WebServerFlow(
            client_id=self.client_id,
            client_secret=self.client_secret,
            scope=scopes,
            state=state,
            redirect_uri=url_for('oauth2.callback', _external=True),
            **kw)

Мое приложение работает в гибком App Engine, если это поможет. И я также попытался установить PREFERRED_URL_SCHEME моего приложения Flask на «https».

И на случай, если это неясно: я не хочу, чтобы redirect_uri был HTTP, мое приложение должно быть только HTTPS ;-)


person Valentin Coudert    schedule 27.06.2019    source источник
comment
Можете ли вы подтвердить, что print(url_for('oauth2.callback', _external=True)) предоставляет вам схему https? Кроме того, есть ли у вас URL-адрес https в авторизованном URI-адресе перенаправления в настройках Google OAuth?   -  person djnz    schedule 28.06.2019


Ответы (1)


Я думаю, что это может быть связано с методом url_for при использовании _external=True, который генерирует абсолютный URL-адрес для обратного вызова. Этот абсолютный URL-адрес может получать значение HTTP вместо HTTPS.

При использовании этого _external=True вы можете добавить _scheme='https', что заставит сгенерированный URL быть только HTTPS. Вот ответ на связанный вопрос, где они ссылаются на ту же ошибку.

person bhito    schedule 06.08.2019
comment
Здравствуйте! Боюсь, в App Engine Flexible нет раздела handlers, поэтому нет и secure:always (cloud.google.com/appengine/docs/flexible/python/reference/) - person Valentin Coudert; 07.08.2019
comment
Правда, мне жаль, что я полностью упустил из виду, что вы использовали flex, сейчас отредактирую ответ! - person bhito; 07.08.2019