我遵循Laracast : What's New in Laravel 5.3: Laravel Passport中提到的確切步驟,使用oauth2
實現api authentication
。Laravel 5.3:Passport Implementation - {「error」:「invalid_client」,「message」:「Client authentication failed」}
我web.php
文件中的客戶端/消費項目的樣子:
use Illuminate\Http\Request;
Route::get('/', function() {
$query = http_build_query([
'client_id' => 2,
'redirect_uri' => 'http://offline.xyz.com/callback',
'response_type' => 'code',
'scope' => '',
]);
return redirect ('http://api.xyz.com/oauth/authorize?'.$query);
});
Route::get('/callback', function (Request $request){
$http= new GuzzleHttp\Client;
$response = $http->post('http://api.xyz.com/oauth/token',[
'form_params' => [
'grant_type' => 'authorization_code',
'client_id' => 2 ,
'client_secret' => 'tUGYrNeWCGAQt220n88CGoXVu7TRDyZ20fxAlFcL' ,
'redirect_uri' => 'http://offline.xyz.com/callback',
'code' => $request->code,
],
]);
return json_decode((string) $response->getBody(), true);
});
我得到,我需要authorize
,讓我的客戶端訪問API的權限請求頁面。但是,一旦我點擊授權,我被重定向到它顯示以下信息的頁面:
{"error":"invalid_client","message":"Client authentication failed"}
如何解決這個問題?
我沒有在離線項目中安裝laravel/passport
。 我錯過了什麼嗎?我遵循並實施了視頻教程中提到的內容。我是否必須包含其他我不知道的東西? (我對oauth2有一個非常基礎的知識)。
如果有幫助,我試圖實現一個離線系統,它將在互聯網連接時定期將數據發送到在線系統。所以我認爲我可以建立一個api
併發送post
請求以存儲信息。
你確定你的client_id是2嗎?我沒看教程,但通常oauth client_ids不是db中的自動增量值。 – engvrdr
我也實現了'vue'組件在那裏,我可以看到我的客戶名單和他們的id,並且,我確信我有一個id = 2的客戶。 –