我在 Laravel 护照上遇到了从服务器端发出访问令牌的问题。
所以每当我触发 oauth/redirect
这条路线时,它都会给我代码,但我没有在 oauth/redirect
路线中获得令牌
这是我的重定向和回调方法
/**
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|void
*/
public function redirect(Request $request)
{
try {
$request->session()->put('state', $state = Str::random(40));
// make queries for authenticate to server
$queries = http_build_query([
'client_id' => '4',
'redirect_uri' => 'http://client.test/oauth/callback',
'response_type' => 'code',
'scope' => 'view-profile',
'state' => $state,
]);
return redirect('http://server.test/oauth/authorize?'. $queries);
} catch (Exception $e) {
return response()->json(['status' => 'error', 'message' => $e->getMessage()], 422);
}
}
/**
* @return \Illuminate\Http\JsonResponse
*/
public function callback(Request $request)
{
try {
$state = $request->session()->pull('state');
throw_unless(
strlen($state) > 0 && $state === $request->state,
InvalidArgumentException::class
);
$response = Http::asForm()->post('http://server.test/oauth/token', [
'grant_type' => 'authorization_code',
'client_id' => '4',
'client_secret' => 'akOIqaRI2EjyTRek36YLeUDrBlnCDdGOE2QOzJat',
'redirect_uri' => 'http://client.test/oauth/callback',
'code' => $request->code,
]);
$response = $response->json();
dd($response);
} catch (Exception $e) {
return response()->json(['status' => 'error', 'message' => $e->getMessage()], 422);
}
}
当我执行 dd($request->code);
时返回 code
但当我执行 dd($response);
时返回 null
对此有什么想法吗?