【发布时间】:2021-08-15 00:06:50
【问题描述】:
我已经安装了 Laravel Passport。
这是我生成验证码的方式:
public function auth(Request $request)
{
$request->session()->put('state', $state = Str::random(40));
$request->session()->put(
'code_verifier', $code_verifier = Str::random(128)
);
$codeChallenge = strtr(rtrim(
base64_encode(hash('sha256', $code_verifier, true))
, '='), '+/', '-_');
$query = http_build_query([
'client_id' => '1',
'redirect_uri' => 'http://127.0.0.1:8000/authorize/response',
'response_type' => 'code',
'scope' => '',
'state' => $state,
'code_challenge' => $codeChallenge,
'code_challenge_method' => 'S256',
]);
return redirect('http://127.0.0.1:9000/oauth/authorize?'.$query);
}
以上请求均顺利通过。 以下是我尝试生成访问令牌的方法:
public function authResponse(Request $request)
{
$state = $request->session()->pull('state');
throw_unless(
strlen($state) > 0 && $state === $request->state,
InvalidArgumentException::class
);
$response = Http::asForm()->post('http://127.0.0.1:9000/oauth/token', [
'grant_type' => 'authorization_code',
'client_id' => '1',
'client_secret' => 'hYMELQ1VKAWrG0TwrkM3JxUuoICSCWCzCztClZZi',
'redirect_uri' => 'http://127.0.0.1:8000/authorize/response',
'code' => $request->code,
]);
return $response->json();
}
当我执行生成访问令牌的代码时,出现以下错误:
{"error":"invalid_client","error_description":"客户端认证 failed","message":"客户端认证失败"}
知道导致此错误的原因是什么吗?我已经从数据库中获取了client_secret。
知道可能是什么问题,我该如何解决?
【问题讨论】:
标签: php laravel oauth-2.0 laravel-passport