Я следовал этому руководству по настройке Laravel & Laravel Passport.Чтобы проверить вызовы моего API, я использовал этот тестовый клиент в другом каталоге на моем сервере:
<?php
require "vendor/autoload.php";
$client = new GuzzleHttp\Client;
try {
$response = $client->post('http://todos.test/oauth/token', [
'form_params' => [
'client_id' => 2,
// The secret generated when you ran: php artisan passport:install
'client_secret' => 'fx5I3bspHpnuqfHFtvdQuppAzdXC7nJclMi2ESXj',
'grant_type' => 'password',
'username' => 'johndoe@scotch.io',
'password' => 'secret',
'scope' => '*',
]
]);
// You'd typically save this payload in the session
$auth = json_decode( (string) $response->getBody() );
$response = $client->get('http://todos.test/api/todos', [
'headers' => [
'Authorization' => 'Bearer '.$auth->access_token,
]
]);
$todos = json_decode( (string) $response->getBody() );
$todoList = "";
foreach ($todos as $todo) {
$todoList .= "<li>{$todo->task}".($todo->done ? '✅' : '')."</li>";
}
echo "<ul>{$todoList}</ul>";
} catch (GuzzleHttp\Exception\BadResponseException $e) {
echo "Unable to retrieve access token.";
}
Это сработало, и оба запроса дали правильный ответ.Однако, когда я помещаю этот код в новое собственное приложение реагирования (конечно, в javascript), первый запрос возвращает 200
и возвращает мне секрет клиента.
Теперь, когда я делаю второй вызов, я получаюошибка: 401 Unauthorized
.Мне было интересно, связано ли это с CORS или я смотрю в неправильном направлении?