Laravel 5.6 passagem de oauth / token pendurado

Eu configurei uma nova instalação do laravel 5.6 com a instalação do Laravel Passport. Se eu fizer uma solicitação de postagem parahttp://127.0.0.1/oauth/token com o Postman, recebo um token válido de volta:

Solicitação

POST /oauth/token HTTP/1.1
Host: 127.0.0.1:8000
Content-Type: application/json
X-Requested-With: XMLHttpRequest
Cache-Control: no-cache
Postman-Token: 99529c07-0fe3-38a8-54cf-8b80a9dd5fbd

{ 
    "grant_type" : "password",
    "client_id" : 4, 
    "client_secret" : "Ib1UOS7BK12tFxOilqwea1XGJhrExbVYe8B7r8wK",
    "username" : "[email protected]",
    "password" : "password"
}

Resposta:

{
    "token_type": "Bearer",
    "expires_in": 31536000,
    "access_token": "eyJ0eXAiOiJKV1.....",
    "refresh_token": "def5020026dfeb6f91f6a9....."
}

Não quero que meus usuários acessem isso diretamente, por isso configurei uma rota no arquivo routes / web.php:

Route::post('login', 'API\AuthController@login');

Meu AuthController se parece com:

<?php

namespace App\Http\Controllers\API;

use App\OAuth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller as Controller;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
use App\User;

class AuthController extends Controller
{

public function __construct()
{
    $this->middleware('auth:api', ['except' => ['login']]);
}

/**
 * Login user and create token
 *
 * @param  [string] email
 * @param  [string] password
 * @param  [boolean] remember_me
 * @return [string] access_token
 * @return [string] token_type
 * @return [string] expires_at
 */
public function login(Request $request)
{

    $request->validate([
        'username' => 'required|string|email',
        'password' => 'required|string'
    ]);

    $credentials = request(['username', 'password']);

    return OAuth::login($credentials['username'], $credentials['password']);

}

Isso chama o método de login da minha classe OAuth:

namespace App;

use GuzzleHttp;

class OAuth
{

public static function login($username, $password)
{
    $http = new GuzzleHttp\Client;

    $response = $http->post('http://127.0.0.1:8000/oauth/token', [
        'form_params' => [
            'grant_type' => 'password',
            'client_id' => 4,
            'client_secret' => 'Ib1UOS7BK12tFxOilqwea1XGJhrExbVYe8B7r8wK',
            'username' => $username,
            'password' => $password
        ],
    ]);

    return json_decode((string) $response->getBody(), true);
}

}

Quando uso o Postman, faça uma solicitação de postagem para obter um token:

POST /login HTTP/1.1
Host: 127.0.0.1:8000
Content-Type: application/json
X-Requested-With: XMLHttpRequest
Cache-Control: no-cache
Postman-Token: 94469bd8-a011-7e04-5f20-b835a5b1cac4

{
    "username" : "[email protected]",
    "password" : "password"
}

O pedido simplesmente trava. Ele não volta com nenhum tipo de resposta ou tempo limite, apenas parece carregar para sempre. Não tenho certeza do que está errado. Se eu fizer uma solicitação de postagem para oauth / token do postman, ele funcionará, mas se eu fizer uma solicitação de postagem para um método controlador, que por sua vez fará uma solicitação de postagem para oauth / token, não funcionará. Eu não estou recebendo nada de volta.

questionAnswers(2)

yourAnswerToTheQuestion