Я пытаюсь создать API для отдыха на Symfony3 и использовать комбинацию FOSOAuthServerBundle, JMSerializer и FOSUserBundle. Насколько мне известно, у меня настроены конфигурации, но я не могу заставить API вернуть токен.
на самом деле он всегда возвращает {"error":"invalid_request","error_description":"Неверный параметр grant_type или параметр отсутствует"}
несмотря на предоставление ключа и значения grant_type
поэтому я сделал кучу копаний и попробовал предложения по этому FOSOAuthServerBundle: Invalid grant_type параметр или параметр отсутствует, а также этот FOSOAuthServerBundle + FOSRestBundle + CamelCase = без аутентификации Я так и не смог заставить его работать. из моих выводов мне, вероятно, нужно отключить прослушиватель тела, который преобразует подчеркнутые ключи в верблюда либо в FOSRestBundle, либо в JMSerializer Bundle, однако я понятия не имею, как это сделать, либо я был бы признателен за указатели в правильном направлении о том, как решить проблему
мой раздел foss config.yml выглядит так
# 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 ] }
/api
только аутентифицированным пользователям, поэтому пользователю необходимо пройти аутентификацию, сначала обратившись к/login
с именем пользователя и паролем, и в том же сеансе/запросе сделать вызов API (GET или POST). - person Alvin Bunk   schedule 20.09.2017