oauth_clients 表仅用于管理 client_id 和 client_secret(以及范围等)。
您需要使用 PasswordGrant 而不是 ClientCredentialsGrant 来验证用户身份(从而处理 users 表和 oauth_clients)。
更多详情请见:https://github.com/lucadegasperi/oauth2-server-laravel/blob/master/docs/authorization-server/password.md
PS:在 Lumen 中,您可能会遇到以下异常:
if (Auth::once($credentials)) {
return Auth::user()->id;
}
所以你需要用类似这样的方式重写它:
$user = User::where('username', strtolower($username))->first();
if (!isset($user)) {
return null;
}
if (app('hash')->check($password, $user->getAuthPassword())) {
return $user->id;
}
return null;
注意:您仍然需要定义至少一个 client_id/client_secret 组合的 oauth_clients 表(请注意,secret 不是散列,应该是普通的)
设置完成后,您将获得类似的访问令牌(不完全是这样,取决于您的实现):
curl -X POST http://yourapp/access_token -d "grant_type=password&client_id=test&client_secret=testsecret&username=testuser&password=testpass"