Почему http-запрос с Guzzle не работает?

Я разрабатываю сайт с Ларавел 5.7 это имеет регистрационную форму. Когда форма отправлена, ее параметры используются для создания другого пользователя через API.

Эти API имеют .cloudfunctions.net конечная точка и веб-приложение разработано с использованием Angular + Firebase.

Когда я делаю GuzzleHttp запрос к этой конечной точке, я получаю ответ HTML: страницу входа в учетную запись Google.

Странно то, что когда я запускаю соответствующую команду cURL с моей бродячей консоли или выполняю тот же запрос с Postman, он возвращает мне правильный ответ json.

Это пример команды cURL:

curl -d '{DATA}' -H "Content-Type: application/json" -u test:test -X POST https://{endpoint}.cloudfunctions.net/api/{function}

А это мой ApiManager класс в проекте Laravel:

namespace App\Utils;

use GuzzleHttp\Client;

/**
* API Manager class.
*/
class ApiManager
{
protected $client;

protected $params;

protected $body;

public function __construct()
{
$this->setupClient();
}

/**
* Setup GuzzleHttp client.
* @return void
*/
private function setupClient()
{
$this->client = new Client([
'base_uri' => env('REMOTE_ENDPOINT'),
'auth' => [env('REMOTE_USERNAME'), env('REMOTE_PASSWORD')],
'headers' => [
'Accept' => 'application/json'
],
'strict' => true
]);
}

/**
* Setup request body as json.
* http://docs.guzzlephp.org/en/stable/request-options.html#json
*
* @param array $params
* @return void
*/
protected function setupBody($params)
{
$this->body = [
'debug' => env('GUZZLE_DEBUG', false),
'json' => $params
];
}

/**
* Decode raw json body to associative array
*
* @param mixed $response
* @return void
*/
protected function getResponseBody($response)
{
$body = json_decode($response->getBody(), true);

if ($body != null && array_key_exists('error', $body)) {
return $body['error'];
}

return $body;
}

/**
* Create user request.
*
* @param array $params
* @return mixed $response
*/
public function createUser($params)
{
$this->setupBody($params);

$response = $this->client->request('POST', '/create-user', $this->body);

if ($response->getStatusCode() == 200) {
return $this->getResponseBody($response);
}

return false;
}

/**
* Update user request.
*
* @param array $params
* @return mixed $response
*/
public function updateUser($params)
{
$this->setupBody($params);

$response = $this->client->request('POST', '/update-user', $this->body);

if ($response->getStatusCode() == 200) {
return $this->getResponseBody($response);
}

return false;
}
}

Кто-нибудь может помочь мне выяснить, почему Guzzle возвращает страницу входа в учетную запись Google, в то время как Postman или cURL из командной строки работают?

заранее спасибо

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]