我正在尝试在Symfony3上构建一个rest api并使用FOSOAuthServerBundle,JMSerializer和FOSUserBundle的组合。 我根据自己的知识设置了配置但是无法让api返回令牌。
事实上,它总是会回归 {“error”:“invalid_request”,“error_description”:“无效的grant_type参数或参数缺失”}尽管提供了grant_type键和值
所以我对此FOSOAuthServerBundle: Invalid grant_type parameter or parameter missing进行了大量挖掘并尝试了一些建议,而FOSOAuthServerBundle + FOSRestBundle + CamelCase = Not authenticating我还是无法让它发挥作用。 根据我的发现,我可能需要禁用身体监听器,它将下划线键转换为FOSRestBundle或JMSerializer Bundle中的驼峰 然而,我不知道如何做任何一件事 我希望指出如何解决问题的正确方向
我的config.yml foss部分看起来像这样
# FOSRest Configuration
fos_rest:
body_listener: true
zone:
- { path: ^/api }
allowed_methods_listener: true
format_listener:
rules:
- { path: '^/api', priorities: ['json'], fallback_format: json, prefer_extension: false }
- { path: '^/', priorities: [ 'text/html', '*/*'], fallback_format: html, prefer_extension: true }
param_fetcher_listener: true
view:
view_response_listener: 'force'
formats:
json: true
security.yml看起来像这样
安全性: 编码器: UserBundle \ Entity \ User:bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
in_memory:
memory: ~
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
authenticate
pattern: ^/
form_login:
provider: fos_userbundle
#csrf_provider: security.csrf.token_manager
logout: true
anonymous: true
#auth api stuff
oauth_token:
pattern: ^/oauth/v2/token
security: false
api_doc:
pattern: ^/api/doc
security: false
api:
pattern: ^/api
fos_oauth: true
stateless: true
#end
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
#api
- { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }