С помощью Динго / апи вместе с lucadegasperi / oauth2-сервера Laravel. Аутентификация пользователя — это хорошо, и я получаю токен доступа обратно, но каждый раз, когда я делаю другой запрос, я получаю следующую ошибку:
call_user_func() expects parameter 1 to be a valid callback, no array or string given
Я использую Опция поставщика услуг перечислены в dingo / api docs, и это определенно устанавливает пользовательский распознаватель (я бы var_dump’d преобразователь в методе setUserResolver).
Мой OauthServiceProvider находится ниже.
<?php namespace App\Providers;
use Dingo\Api\Auth\Auth;
use Dingo\Api\Auth\Provider\OAuth2;
use App\User\User;
use Illuminate\Support\ServiceProvider;
class OAuthServiceProvider extends ServiceProvider
{
public function boot()
{
$this->app[Auth::class]->extend('oauth', function ($app) {
$provider = new OAuth2($app['oauth2-server.authorizer']->getChecker());
$provider->setUserResolver(function ($id) {
return User::first();
// Logic to return a user by their ID.
});
$provider->setClientResolver(function ($id) {
// Logic to return a client by their ID.
});
return $provider;
});
}
public function register()
{
//
}
}
Оказывается, я был совершенно не там, где искал. В config / api.php, в моих настройках авторизации у меня было
'oauth2' => Dingo\Api\Auth\Provider\OAuth2::class,
Должен был только что
'oauth' => Dingo\Api\Auth\Provider\OAuth2::class,
Других решений пока нет …