我设置了OAuth[使用fosoauthserverbundle]。我正在设置一个密码类型流。
我可以获得客户端类型的访问令牌,但使用密码类型我得到一个错误。
错误:在非对象上调用成员函数loadUserByUsername()
更具体地说
$user = $this->userProvider->loadUserByUsername($username);<-OAuthStorage.php第161行
/oauth/v2/令牌? client_id = [CLIENTID], client_secret = [CLIENTSECRET], grant_type = password&用户名= test&密码=测试
所以OAuthStorage没有用户提供商设置。我找不到关于如何为此设置提供者的任何好的文档。
My security conf
encoders:
FOSUserBundleModelUserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
user_provider:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt|error)|css|images|js)/
security: false
oauth_token:
pattern: ^/oauth/v2/token
security: false
oauth_authorize:
pattern: ^/oauth/v2/auth
form_login:
provider: user_provider
check_path: _security_check
login_path: _demo_login
anonymous: true
api:
pattern: ^/api
fos_oauth: true
stateless: true
access_control:
# You can omit this if /api can be accessed both authenticated and anonymously
- { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }
你们觉得呢?什么好主意吗?
找到了!
提供者显然是在config.yml中配置的。我把它设置为以前的自定义用户提供程序。我将其设置为与security中指定的相同的提供程序。Yml和一切工作都很好。