我正在尝试使用基于插件grails-spring-security-oauth2-provider 的grails 配置广告 OAUTH2 提供程序,但已升级到pring-Security-OAuth M6。
我能够使用 /oauth/authorize 端点注册客户端并获取授权码。
但是当我尝试获取访问令牌时出现问题,它似乎无法返回 json。
我用 curl 调用访问令牌端点
curl -k -i -H "Accept: application/json" "https://graph.mysite.it/oauth/token?client_id=testApp&client_secret=testAppSecret&response_type=token&grant_typization_code&code=OJD7xf&redirect_uri=https%3A%2F%2Fgraph.mysiste.it%2Fxme"
并且服务器回复 HttpMediaTypeNotAcceptableException 找不到可接受的表示。
在google上搜索我尝试添加resources.xml mvc:annotation-driven让spring注册json jackson转换器,此时调用返回HTTP/1.1 406 Not Acceptable“此请求标识的资源只能生成响应根据请求“接受”标头具有不可接受的特征
进入 spring security oauth source 我到达了这个控制器TokenEndpoint.java 在这里调试我看到令牌被正确生成。使用 groovy 控制台,我尝试手动收集杰克逊转换器广告,它起作用了:
import org.codehaus.jackson.map.ObjectMapper
import org.springframework.security.oauth2.common.OAuth2AccessToken
def mapper = new ObjectMapper()
def token = new OAuth2AccessToken('fdkshdlfhklsahdklfhksaldfkl')
mapper.writeValueAsString(token)
json 打印正确,所以我可以排除杰克逊配置中的问题。
spring mvc 控制器在 grails 中映射为
"/oauth/token"(uri:"/oauth/token.dispatch")
问题出在哪里?为什么grails不能返回json?
这是我的依赖报告