问题

如题,恶心的BUG。项目早期代码遗留的BUG,项目中使用的Retrofit,奇怪的是使用@POST方法的login没有用@Body传client_id、username、grant_type这些数据,而是使用放到url中的方式。非常奇怪,遂决定重构并使用@Body的形式传,败。

分析

郁闷了半天,发送的数据没问题。恰好周末,那就自己用Django搭个服务,然后使用了django-oauth-toolkit这个Oauth2开源库。同样的问题,url传参ok,@body就是不行。会不会是数据格式问题,于是去django-oauth-toolkit的issue中看,果然0.9.0之前不支持Content-Type: application/json。周一去找Server撕逼。

方案

1.继续使用丑陋的方式
2.将django-oauth-toolkit更新到0.9.0,并添加如下代码:

1
OAUTH2_PROVIDER = {
    # other OAUTH2 settings
    'OAUTH2_BACKEND_CLASS': 'oauth2_provider.oauth2_backends.JSONOAuthLibCore'
}

issue地址