0

我一直在 Symfony 2.8 中的服务器上工作,构建了一个以 camelCase 样式返回 json 对象的 rest api,现在的问题是,当我集成 OauthServer 捆绑包时,它会引发这个错误Invalid grant_type parameter or parameter missing",我知道这是因为我正在使用array_normalizer: fos_rest.normalizer.camel_keys body我的fos_rest配置中的监听器。这是我的代码configuration.yml

fos_rest:
    #other listeners#
    body_listener:
        array_normalizer: fos_rest.normalizer.camel_keys
    zone: 
         - { path: ^/api }

这里是我的 Oauth 配置security.yml

firewalls:
    oauth_token:
        pattern: ^/oauth/v2/token
        security: false
    api:
        pattern: ^/api                             
        fos_oauth: true                            
        stateless: true                            
        anonymous: false   

我发现我不是第一个发生这种情况的人,并且zone添加了该属性来缓解这种情况,但在我的情况下,它只适用于 下的所有内容,^/api因为当我更改模式时,它会按预期停止使用侦听器但是当我调用^/oauth/v2/token路径时,它似乎忽略了zone给定的路径。

为了检索我的令牌,我使用了下一个 POST 请求:

{
    grant_type= "password" 
    client_id= "clientId"
    client_secret= "clientSecret"
    username= "user"
    password= "password"
}

我想澄清一下,如果我停用侦听器,我会成功获得令牌,但我的应用程序的其余部分会停止工作,因为它在任何地方都使用 camelCase,我知道一旦替代方法是在客户端序列化我的数据,但它是目前很复杂。

我究竟做错了什么?我无法弄清楚我错过了什么。

4

1 回答 1

1

作为解决方法,您可以使用POST,而不是GET像这样

http://example.com/oauth/v2/token?client_id=[CLIENT_ID]&client_secret=[SECRET]&grant_type=password&username=[USERNAME]&password=[PASSWORD]

然后你就不必担心正文序列化器了。

于 2017-07-11T15:46:28.030 回答