我已成功为我的django rest api项目实现了oauth2。我想更改login api的错误响应格式。
当前的错误响应是
{
"error_description": "Invalid credentials given.",
"error": "invalid_grant"
}
我想将error_description键更改为detail(详细信息是所有其他django错误响应的关键)。我需要对所有错误响应进行标准化。
预期结果是
{
"detail": "Invalid credentials given."
}
这是从/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/errors.py文件中的类OAuth2Error(Exception)执行的。
答案 0 :(得分:2)
我建议拦截这种类型的响应,并根据需要进行调整。
有几种方法,但最简单的选择是定义自己的视图,该视图被调用授权URL,内部调用oauth2视图并修改此案例的响应,例如:
之类的东西从:
from oauth2_provider.views import TokenView
...
url('auth/token/', TokenView.as_view()),
为:
from oauth2_provider.views import TokenView
def custom_token_view(request, *args, **kwargs):
response = TokenView.as_view()(request, *args, **kwargs)
if "invalid_grant " in response.content:
response = do_whatever_needed(response) # i.e. response.content
return response
...
url('auth/token/', custom_token_view),
如果您使用Django休息框架(DRF),我建议:
如果您不使用DRF: