Symfony 获取带有授权码的 Oauth 令牌

Symfony get Oauth Token With Authorization code

我在使用 OAuth 2.0 获取访问令牌时遇到了麻烦

我的网站请求授权码..并在获得授权码后重定向回我的页面..然后我将这些变量用于发送访问令牌

我也尝试将参数放在查询中而不是 headers.. 结果相同

$response = $httpClient->request('POST', $tokenURL, [
  'headers' => [
    'code' => $_GET['code'],
    'client_id' => 'CLIENT ID',
    'client_secret' => 'CLIENT SECRET',
    'grant_type' => 'authorization_code',
    'redirect_uri' => 'https://127.0.0.1:8000/connect',
  ],
]);

我已将此请求链接到一个按钮。所以当我按下按钮时,它会发送请求...

我收到 400 条回复,但我不知道我错过了什么!

在对令牌端点的请求中,您应该在请求的 body 中发送参数,例如表单。目前您在 header 秒内发送它们,这是不正确的。还要确保在调用令牌端点时对客户端进行身份验证的正确方法是什么。您可能需要发送 Authorization header 并进行 Basic 身份验证。

因此您的请求可能如下所示:

$response = $httpClient->request('POST', $tokenURL, [
  'body' => [
    'code' => $_GET['code'],
    'client_id' => 'CLIENT ID',
    'client_secret' => 'CLIENT SECRET',
    'grant_type' => 'authorization_code',
    'redirect_uri' => 'https://127.0.0.1:8000/connect',
  ],
]);

或者像这样:

$response = $httpClient->request('POST', $tokenURL, [
  'headers' => [
    'Authorization' => 'Basic ' . base64_encode('CLIENT ID:CLIENT SECRET')
  ],
  'body' => [
    'code' => $_GET['code'],
    'grant_type' => 'authorization_code',
    'redirect_uri' => 'https://127.0.0.1:8000/connect',
  ],
]);