繁体   English   中英

将 python-social-auth 集成到 drf-spectacular (Swagger)

[英]Integrate python-social-auth to drf-spectacular (Swagger)

我有一个基于python-social-auth OAuth2 的 Django (DRF) 项目和基于drf-spectacular的 Swagger。 我需要将这两个库集成在一起,以便 Swagger 允许 OAuth2 授权,例如 Google OAuth2。 我在 设置中找到了drf-spectacular的 OAuth2 配置:

SPECTACULAR_SETTINGS = {
    ...
    'SWAGGER_UI_OAUTH2_CONFIG': {
         ...
         # Oauth2 related settings. used for example by django-oauth2-toolkit.
         # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#oauth-flows-object
         'OAUTH2_FLOWS': [],
         'OAUTH2_AUTHORIZATION_URL': None,
         'OAUTH2_TOKEN_URL': None,
         'OAUTH2_REFRESH_URL': None,
         'OAUTH2_SCOPES': None,
    },
    ...
}

但我不确定它是否适合我。 我在我的配置版本中写了这个,但它似乎没有效果:

'SWAGGER_UI_OAUTH2_CONFIG': {
    'OAUTH2_AUTHORIZATION_URL': 'https://accounts.google.com/o/oauth2/auth',
    'OAUTH2_TOKEN_URL': 'https://accounts.google.com/o/oauth2/token',
    'OAUTH2_SCOPES': ['openid', 'email', 'profile'],
}

Swagger 仍然没有 OAuth2。 知道如何管理它吗?

我认为您将范围与流程混合在一起,而且这些键应该属于 SPECTACULAR_SETTINGS 字典,而不是 SWAGGER_UI_OAUTH2_CONFIG:

SPECTACULAR_SETTINGS = {
    'OAUTH2_FLOWS': ['password'],
    'OAUTH2_SCOPES': {
                'read': 'Read scope',
                'write': 'Write scope',
            }
}

我无法解释为什么 SPECTACULAR_SETTINGS 和 SWAGGER_UI_OAUTH2_CONFIG 中有一些重复的数据,事实上第二个似乎没有效果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM