Theodore Enderby
Theodore Enderby

Reputation: 642

How to set provider to oauth token

I've set up OAuth [ using FOSOauthServerBudle ]. I'm working on setting up a password type flow.

I can get an access token with client type, but using password type I get an error.

Error: Call to a member function loadUserByUsername() on a non-object

More specifically

$user = $this->userProvider->loadUserByUsername($username); <-OAuthStorage.php at line 161

/oauth/v2/token?client_id=[CLIENTID]&client_secret=[CLIENTSECRET]&grant_type=password&username=test&password=test

So there's no user provider set for OAuthStorage. I can't find any good documentation on how to set a provider for this.

My security conf

encoders:
    FOS\UserBundle\Model\UserInterface: 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 ] }

What do you think guys. Any ideas?

Upvotes: 1

Views: 656

Answers (1)

Theodore Enderby
Theodore Enderby

Reputation: 642

Eureka!

So apparently the provider is configured in config.yml. I had it set to a previous custom user provider. I set it to the same provider as specified in security.yml and everything works just fine.

Upvotes: 1

Related Questions