如何配置OpenAPI securitySchemes使openapi-generator生成正确的Token初始化代码?
问题解决:通过调整OpenAPI YAML配置生成正确的Python SDK认证代码
问题核心是当前的OpenAPI YAML未明确指定默认安全认证方案,导致openapi-generator生成的Configuration类没有正确将构造参数的access_token赋值给实例变量,需要手动修改才能生效。
解决方案:添加全局默认安全配置
在OpenAPI YAML的根节点(与openapi、info、paths同级)新增security字段,明确指定默认使用local_bearer_auth认证方案:
openapi: 3.0.0 info: title: Firefly III API version: "1.0.0" # 新增全局安全配置 security: - local_bearer_auth: [] paths: # 原有路径配置... components: securitySchemes: firefly_iii_auth: type: oauth2 description: Default OAuth2 flow flows: authorizationCode: authorizationUrl: https://demo.firefly-iii.org/oauth/authorize tokenUrl: https://demo.firefly-iii.org/oauth/token refreshUrl: https://demo.firefly-iii.org/oauth/token scopes: {} local_bearer_auth: description: Optional Bearer token flow type: http scheme: bearer
为什么这样改有效?
- 全局
security配置会告知openapi-generator:所有API接口默认采用local_bearer_auth(Bearer Token)认证。 - 当generator识别到默认使用Bearer认证时,会自动生成正确的
Configuration类代码,将构造函数传入的access_token参数直接赋值给self.access_token,而非硬编码为None。
可选:针对单个接口配置认证
如果不需要全局默认启用Bearer认证,也可以在特定接口的配置下单独添加security字段:
paths: /accounts: get: security: - local_bearer_auth: [] summary: 获取账户列表 # 接口其他配置...
这种方式适合仅部分接口需要Bearer认证的场景,但需要逐个接口配置,不如全局配置高效。
验证效果
修改YAML后重新生成Python SDK,查看configuration.py的__init__方法,会看到自动生成的self.access_token = access_token代码,无需手动修改即可正常使用Bearer Token完成认证。
内容的提问来源于stack exchange,提问作者Akasha
相关产品推荐
相关产品推荐

