FOSOAuthServerBundle + FOSRestBundle + CamelCase = 不认证
FOSOAuthServerBundle + FOSRestBundle + CamelCase = Not authenticating
我一直在使用 Symfony 2.8 开发我的服务器,构建一个 rest api which returns json objects in camelCase style,现在的问题是当我集成 OauthServer捆绑它会引发此错误 Invalid grant_type parameter or parameter missing"
,我知道发生这种情况是因为我在 fos_rest
配置中使用了 array_normalizer: fos_rest.normalizer.camel_keys
主体侦听器。这是我的代码 configuration.yml
:
fos_rest:
#other listeners#
body_listener:
array_normalizer: fos_rest.normalizer.camel_keys
zone:
- { path: ^/api }
这里是我在 security.yml
中的 Oauth 配置:
firewalls:
oauth_token:
pattern: ^/oauth/v2/token
security: false
api:
pattern: ^/api
fos_oauth: true
stateless: true
anonymous: false
我发现我不是第一个发生这种情况的人,并且添加了 zone
属性来缓解这种情况,但在我的情况下它只适用于 [=19= 下的所有内容] 因为当我更改模式时,它会按预期停止使用侦听器,但是当我调用 ^/oauth/v2/token
路径时,它似乎忽略了 zone
给定路径。
为了检索我的令牌,我正在使用下一个 POST 请求:
{
grant_type= "password"
client_id= "clientId"
client_secret= "clientSecret"
username= "user"
password= "password"
}
我想澄清一下,如果我停用侦听器,我会成功获得令牌,但我的应用程序的其余部分会停止工作,因为它到处都使用驼峰命名法,我知道另一种选择是在客户端序列化我的数据, 但目前比较复杂。
我做错了什么?我不知道我错过了什么。
作为解决方法,您可以使用 POST
、GET
来代替
http://example.com/oauth/v2/token?client_id=[CLIENT_ID]&client_secret=[SECRET]&grant_type=password&username=[USERNAME]&password=[PASSWORD]
那么您就不必担心正文序列化程序了。
我一直在使用 Symfony 2.8 开发我的服务器,构建一个 rest api which returns json objects in camelCase style,现在的问题是当我集成 OauthServer捆绑它会引发此错误 Invalid grant_type parameter or parameter missing"
,我知道发生这种情况是因为我在 fos_rest
配置中使用了 array_normalizer: fos_rest.normalizer.camel_keys
主体侦听器。这是我的代码 configuration.yml
:
fos_rest:
#other listeners#
body_listener:
array_normalizer: fos_rest.normalizer.camel_keys
zone:
- { path: ^/api }
这里是我在 security.yml
中的 Oauth 配置:
firewalls:
oauth_token:
pattern: ^/oauth/v2/token
security: false
api:
pattern: ^/api
fos_oauth: true
stateless: true
anonymous: false
我发现我不是第一个发生这种情况的人,并且添加了 zone
属性来缓解这种情况,但在我的情况下它只适用于 [=19= 下的所有内容] 因为当我更改模式时,它会按预期停止使用侦听器,但是当我调用 ^/oauth/v2/token
路径时,它似乎忽略了 zone
给定路径。
为了检索我的令牌,我正在使用下一个 POST 请求:
{
grant_type= "password"
client_id= "clientId"
client_secret= "clientSecret"
username= "user"
password= "password"
}
我想澄清一下,如果我停用侦听器,我会成功获得令牌,但我的应用程序的其余部分会停止工作,因为它到处都使用驼峰命名法,我知道另一种选择是在客户端序列化我的数据, 但目前比较复杂。
我做错了什么?我不知道我错过了什么。
作为解决方法,您可以使用 POST
、GET
来代替
http://example.com/oauth/v2/token?client_id=[CLIENT_ID]&client_secret=[SECRET]&grant_type=password&username=[USERNAME]&password=[PASSWORD]
那么您就不必担心正文序列化程序了。