Laravel Passport 为 Guzzle HTTP 客户端创建新的 API 令牌
Laravel Passport create fresh API token for Guzzle HTTP Client
显然,我可以使用 VueJs 的 Axios 和 jQuery 的 Ajax 通过 Javascript 使用我自己的 API,但同样无法与 Guzzle 一起使用HTTP 客户端。
如何将 CreateFreshApiToken 中间件 与 Guzzle 一起使用。
Axios - 好的
axios.get('api/user').then(response => {
console.log(response.data);
}).catch(error => {
console.log(error.response.data);
});
Ajax - 好的
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);
}
});
Guzzle - 失败
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()]);
}
好吧,createFreshApiTokens
附加了一个用于授权的 cookie,但是当您使用 guzzle 时,您并不是从客户端(浏览器)发出请求,因此 cookie 没有附加到请求中!
显然,我可以使用 VueJs 的 Axios 和 jQuery 的 Ajax 通过 Javascript 使用我自己的 API,但同样无法与 Guzzle 一起使用HTTP 客户端。
如何将 CreateFreshApiToken 中间件 与 Guzzle 一起使用。
Axios - 好的
axios.get('api/user').then(response => {
console.log(response.data);
}).catch(error => {
console.log(error.response.data);
});
Ajax - 好的
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);
}
});
Guzzle - 失败
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()]);
}
好吧,createFreshApiTokens
附加了一个用于授权的 cookie,但是当您使用 guzzle 时,您并不是从客户端(浏览器)发出请求,因此 cookie 没有附加到请求中!