Laravel Passport создает новый API-токен для HTTP-клиента Guzzle - PullRequest
0 голосов
/ 15 сентября 2018

Очевидно, я могу использовать свой собственный API через Javascript, используя Axios от VueJ и Ajax из jQuery, но он не работает с HTTP-клиентом Guzzle.

Как я могу использовать CreateFreshApiToken промежуточное ПО с Guzzle.

Axios - ОК

axios.get('api/user').then(response => {
    console.log(response.data);
}).catch(error => {
    console.log(error.response.data);
});

Ajax - OK

window.$.ajax({
    headers: {
        'Accept': 'application/json',
        'X-Requested-With': 'XMLHttpRequest',
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    type: 'GET',
    url: 'api/user',
    success: function (response) {
        console.log(response);
    },
    error: function (xhr) {
        console.error(xhr.responseText);
    }
});

Жрать - Не удалось

try {
    $client = new Client([
        'base_uri' => 'http://localhost/passport-test/public/api/',
        'headers' => [
            'Accept' => 'application/json',
        ],
    ]);

    $api_response = $client->request('GET', 'user', ['debug' => true]);

    $user = json_decode($api_response->getBody(), true);

    return response()->json($user);
} catch (ConnectException $ex) {
    return response()->json(['code' => $ex->getCode(), 'message' => $ex->getMessage()]);
} catch (ClientException $ex) {
    return json_decode($ex->getResponse()->getBody(), true);
} catch (ServerException $ex) {
    return response()->json(['code' => $ex->getCode(), 'message' => $ex->getMessage()]);
}

1 Ответ

0 голосов
/ 17 сентября 2018

Ну, createFreshApiTokens прикрепляет cookie для авторизации, но когда вы используете жрет, вы не делаете запрос со стороны клиента (браузера), поэтому cookie не прикрепляется к запросу!

...