私は Dingo API で Laravel 5.3 を使用しており、Laravel の OAuth 2.0 (別名 Passport) を Dingo の認証で動作させようとしています。
OAuth 2.0 プロバイダーを に追加しましたconfig/api.php
。これは次の場所にあります。
'auth' => [
'oauth' => function($app) {
$provider = new Dingo\Api\Auth\LeagueOAuth2Provider($app['oauth2.resource-server']);
$provider->setUserCallback(function($id) {
return User::find($id);
});
$provider->setClientCallback(function($id) {
return Client::find($id);
});
return $provider;
}
]
そしてapi.auth
、ルートにミドルウェアを追加しました。
$api = app('Dingo\Api\Routing\Router');
$api->version('v2', function($api) {
# ...
$api->get('test', ['middleware' => 'api.auth', 'App\Http\Controllers\v2\SnippetController@test']);
});
をリクエストする/api/test
と、次のエラーを含む500
HTTP レスポンスが返されます。
Call to undefined method Closure::authenticate()
完全な JSON 応答 (トレースを含む) は、ここにあります。
悲しいことに、ドキュメントleague/oauth2-server
では、Laravel が使用する でDingo をセットアップすることについてほとんど言及していません。