在没有https的情况下在本地测试flask-oauthlib

use*_*431 32 flask oauth-2.0 flask-oauthlib

我使用flask-oauthlib实现了oauth2服务器和oauth2客户端.

当我尝试在本地测试时,客户端返回InsecureTransportError并告诉我应该使用https.

有没有办法在没有https的情况下在本地测试应用程序?

客户端在127.0.0.2:5000上运行,服务器在127.0.0.1:5000上运行.

谢谢

Han*_* Z. 70

来自http://requests-oauthlib.readthedocs.org/en/latest/examples/real_world_example.html:

您应该注意Oauth2通过SSL层工作.如果您的服务器未参数化以允许HTTPS,则fetch_token方法将引发oauthlib.oauth2.rfc6749.errors.InsecureTransportError.大多数人在测试时都没有在他们的服务器上设置SSL,这很好.您可以通过两种方式禁用此检查:

  1. 通过设置环境变量.
export OAUTHLIB_INSECURE_TRANSPORT=1
Run Code Online (Sandbox Code Playgroud)
  1. 相当于上面你可以在Python中设置它(如果你在设置环境变量时遇到问题)
# Somewhere in webapp_example.py, before the app.run for example
import os 
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
Run Code Online (Sandbox Code Playgroud)

  • 很好,如果你接受答案会很好:-) (5认同)
  • 当代码显示 _AUTHLIB_... 时,为什么所有答案都显示 _OAUTHLIB_INSERCURE_TRANSPORT_?https://github.com/lepture/authlib/blob/8234da2896c724e3c7c021984175d99f48ef5a70/authlib/common/security.py (2认同)

fai*_*din 19

对于OAuth1,您可以添加设置

app.config.update({
    'OAUTH1_PROVIDER_ENFORCE_SSL': False
})
Run Code Online (Sandbox Code Playgroud)

对于OAuth2,您可以设置环境变量.

export OAUTHLIB_INSECURE_TRANSPORT=1
Run Code Online (Sandbox Code Playgroud)

或在运行时

import os
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
Run Code Online (Sandbox Code Playgroud)


Leo*_*out 8

对于 Authlib 用户:

export AUTHLIB_INSECURE_TRANSPORT=1
Run Code Online (Sandbox Code Playgroud)

或者,如果您想以编程方式设置它:

import os

os.environ['AUTHLIB_INSECURE_TRANSPORT'] = '1'
Run Code Online (Sandbox Code Playgroud)

我知道它没有回答这个问题,但每次我向谷歌询问它时,我都会进入这个页面。