我正在使用 Symfony2 开发一个网站,其中包含一个用于从移动应用程序访问数据的 API。我使用 FOSUserBundle 在网站上进行身份验证,使用 FOSRestBundle 和 FOSOAuthServerBundle 进行 API。
我使用密码作为 grant_type,因此我可以使用用户的登录名/密码组合登录 API。我成功地从包中获得了一个 access_token,但是当我尝试使用这个令牌(例如/api/user?access_token=MY_TOKEN
)访问 api 时,我总是被重定向到我的网站主页(这是我的登录页面)。我真的不知道我错过了什么。
这是我的配置:
#app/Resources/config.yml
fos_oauth_server:
db_driver: orm
client_class: Cubbyhole\ApiBundle\Entity\Client
access_token_class: Cubbyhole\ApiBundle\Entity\AccessToken
refresh_token_class: Cubbyhole\ApiBundle\Entity\RefreshToken
auth_code_class: Cubbyhole\ApiBundle\Entity\AuthCode
service:
user_provider: fos_user.user_manager
#app/Resources/security.yml
#Firewalls for OAuth2
oauth_token:
pattern: ^/oauth/v2/token
security: false
oauth_authorize:
pattern: ^/oauth/v2/auth
form_login:
provider: fos_userbundle
check_path: fos_user_security_check
login_path: fos_user_security_login
anonymous: true
api:
pattern: ^/api
fos_oauth: true
stateless: true
access_control:
- { path: ^/api/oauth/v2, roles: [ IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_ANONYMOUSLY ] }
- { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }