Laravel guzzle request работает над tinker, но не авторизован в контроллере

У меня проблема, с которой я не мог разобраться, у меня есть класс, который подключается к спокойному api с помощью Guzzle, он работает в tinker, но в контроллере я всегда получаю несанкционированную ошибку 401 с использованием тех же данных подключения.

ApiConnectionClass

use App\ApiData;
use Carbon\Carbon;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Psr7;
class ApiConnectionClass
{
    var $conn_data;
    var $client;

public function __construct()
{
    $this->conn_data = ApiData::findOrFail(1);
    $this->client = new Client(['base_uri' => $this->conn_data->url]);
}

 public function lista_pruebas(){
    try{
        $response = $this->client->request('GET', 'pruebas/detalles', [
            'verify' => false,
            'headers' => ['Authorization' => 'Bearer ' . $this->conn_data->access_token],
        ]);
    } catch (GuzzleException $e) {
        dump(Psr7\str($e->getRequest()));
        if ($e->hasResponse()) {
            dd(Psr7\str($e->getResponse()));
        }
    }
     return json_decode($response->getBody()->getContents());
 }

в tinker я получаю правильный ответ json

$api = new App\Classes\ApiConnectionClass();
$api->lista_pruebas();

ApiController

use App\Classes\ApiConnectionClass;


class ApiController extends Controller
{
    public function lista_pruebas(){
        $api = new ApiConnectionClass();
        $lista = $api->lista_pruebas();

        return view('pruebas.index', compact('lista'));
    }
}

Ответ ApiConnectionClass, вызванный из контроллера

""" HTTP/1.0 401 Unauthorized\r\n Date: Wed, 22 Aug 2018 16:20:58 GMT\r\n Server: Apache/2.4.33 (Win64) PHP/7.2.4\r\n Vary: Authorization\r\n X-Powered-By: PHP/7.2.4\r\n Cache-Control: no-cache, private\r\n Content-Length: 13\r\n Connection: close\r\n Content-Type: text/html; charset=UTF-8\r\n \r\n Unauthorized. """

Мой код 2cents на английском, он вам очень поможет. Удачи!

Kyslik 22.08.2018 18:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
1
391
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это не похоже на ошибку в том, что вы делаете в коде, потому что я вижу это использование жрать повсюду в сети. Однако у меня есть пара предложений. Tinker использует другую среду выполнения, чем ваше приложение (php-cli vs php-fpm соответственно), это может вызвать проблему, потому что в одном сценарии (php-cli) php идет напрямую из вашего ящика на сервер api, а в другом - через ваш веб-сервер перед отправкой запроса (php-fpm). Первое, что нужно сделать, это очистить кеш и конфигурацию laravel с помощью php artisan cache: clear и php artisan config: clear, если это не удастся, я бы посмотрел на ограничения или настройки междоменного доступа на вашем веб-сервере. Удачи!

Отлично, ты спас мне жизнь, это была кросс-доменная проблема.

David Maloof 23.08.2018 02:04

Другие вопросы по теме