我遵循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的客户。 –