【问题标题】:oauth2client.flask_util redirect_uri in http instead of httpsoauth2client.flask_util redirect_uri 在 http 而不是 https
【发布时间】:2019-11-09 16:31:53
【问题描述】:

我知道oauth2client 已被弃用,但仍然是我们使用的那个。 当我使用 Google 启动 oauth2 进程时,它总是试图将我重定向到我的应用程序的 HTTP 版本。

我已经看到 Flask 的 url_for 方法应该是基于请求上下文的,当我启动进程时(即调用 oauth2authorize url),我在 HTTPS 中。所以我不明白为什么它会在 HTTP 中传递一个redirect_uri...

这是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 中灵活运行。我还尝试将我的 Flask 应用程序的 PREFERRED_URL_SCHEME 设置为“https”。

如果不清楚:我不希望 redirect_uri 是 HTTP,我的应用应该只是 HTTPS ;-)

【问题讨论】:

  • 你能确认print(url_for('oauth2.callback', _external=True))给你一个https方案吗?另外,您的 Google OAuth 设置中的授权重定向 uri 中是否有 https url?

标签: python-2.7 flask app-engine-flexible oauth2client


【解决方案1】:

我认为当使用为回调生成绝对 URL 的 _external=True 时,它可能来自 url_for method。此绝对 URL 的值可能是 HTTP 而不是 HTTPS。

使用_external=True 时,您可以添加_scheme='https',这将强制生成的 URL 仅为 HTTPS。 Here's 一个相关问题的答案,他们提到了同样的错误。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 2015-08-14
  • 2019-06-17
  • 1970-01-01
  • 2019-02-27
  • 2017-05-19
  • 2019-12-19
相关资源
最近更新 更多