2016-10-14 8 views
3

私は、laravel 5.3の新しいoauth2機能を使用して、私のlaravelプロジェクトの1つから別のプロジェクトにapi呼び出しをしようとしています。'auth:api'ミドルウェアを追加した後にルートが見つかりません。Laravel 5.3

私は古いものから呼び出したい私の新しいlaravelプロジェクトのapi.phpルートファイルでこのルートを持っている:で、私は問題なく、それを呼び出すことができますミドルウェアなしで

Route::get('/hello', function() { 
    return 'hello'; 
})->middleware('auth:api'); 

ミドルウェアでは、404が見つかりませんでした。

$http = new GuzzleHttp\Client; 

$response = $http->post('http://my-oauth-project.com/oauth/token', [ 
    'form_params' => [ 
     'grant_type' => 'client_credentials', 
     'client_id' => 'client_id', 
     'client_secret' => 'client_secret', 
    ], 
]); 
$token = json_decode($response->getBody(), true)['access_token']; 

$response = $http->get('http://my-oauth-project.com/api/hello', [ 
    'headers' => [ 
     'Accept' => 'application/json', 
     'Authorization' => 'Bearer '.$token, 
    ], 
]); 
return $response->getBody(); 

返されるエラー:

[2016-10-14 09:46:14] local.ERROR: exception 'GuzzleHttp\Exception\ClientException' with message 'Client error: `GET http://my-oauth-project.com/api/hello` resulted in a `404 Not Found` response: 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8" /> 
     <meta name="robots" content="noindex,nofollow (truncated...) 

答えて

3

ミドルウェア「AUTH:APIは」自動的にリダイレクトされます。ここ

は、アクセストークンを取得し、API呼び出しを行うコードでありますログインページ(この場合は存在しないため、404エラー)へのリクエスト。

クライアントクレデンシャルにログインする必要はありません。そのドキュメントはまだ公開されていませんが、ミドルウェアdoes existです。

protected $routeMiddleware = [ 
    'client_credentials' => \Laravel\Passport\Http\Middleware\CheckClientCredentials::class, 
]; 

を次にルートの最後に、このミドルウェアを追加します:

Route::get('/hello', function() { 
    return 'hello'; 
})->middleware('client_credentials'); 

これがために働いたものですので、同じようapp\Http\Kernel.php$routeMiddleware変数の下に新しいミドルウェアを作成し、それを使用するには

私。

+0

私は、ドキュメントが使用すると言っているミドルウェアは、ドキュメントが広範囲にカバーするもの(クライアントの信用とパスワードの付与)で壊れてしまうとは思いません。それにもかかわらず、これを見つけてくれてありがとう! – samrap

関連する問題