我需要你的帮助,用Django改编Authlib
我正在尝试使用OpenId和Authlib来开发一个Django应用程序来连接我的用户,并且面临访问令牌的问题,出现了问题无效的\u客户端。通过使用Postman,我发现OpenId提供者需要在标题中包含一些参数,如“Content Length”或“Host”
当Header参数在client.py中定义时,它就像一个符咒。但是,我想从views.py传递自定义头(主要是为了避免在包中直接定义主机),但是authorize\u access\u令牌不允许多个参数
def auth(request):
token = oauth.customprovider.authorize_access_token(request)
也许“非标准合规性修复”功能会有所帮助,但我无法将其应用于Django和Header参数 https://docs.authlib.org/en/stable/client/oauth2.html#compliance-fix-oauth2
from authlib.common.urls import add_params_to_uri, url_decode
def _non_compliant_param_name(url, headers, data):
params = {'site': 'stackoverflow'}
url = add_params_to_uri(url, params)
return url, headers, body
def _fix_token_response(resp):
data = dict(url_decode(resp.text))
data['token_type'] = 'Bearer'
data['expires_in'] = int(data['expires'])
resp.json = lambda: data
return resp
session.register_compliance_hook(
'protected_request', _non_compliant_param_name)
session.register_compliance_hook(
'access_token_response', _fix_token_response)
有人知道如何将自定义头传递给Authlib或使用Compliance Fix和Django定义它吗
目前没有回答
相关问题 更多 >
编程相关推荐