0

I'm trying to create Laravel as a API server

I'm trying to follow Laravel Passport Documentation. I set up the basic components that I will use.

I'm using Insomia and Postman to test my API calls.

So here is the thing. When I test http://localhost:8000/oauth/token. It works fine.

Configuration:

HEADERS

content-type | application/json

BODY : multipart

grant_type:     password
client_id:      my-client_id
client_secret:  my-client_secret
username:       my-username
password:       my-password

This configuration works fine and it throws me an access_token.

But when I try to put it on my controller and use Guzzle. So I make an route in my route/api.php and create Route::post('login', 'Api/AuthController@login') and also I create the Api/AuthController.

Heres what in my Api/AuthController based on Laravel Documentation:

NOTE: I also install the Guzzle in my composer.

By using this commands on my terminal composer require guzzlehttp/guzzle, composer update and composer dump-autoload. I see the guzzle in my composer.json file.

  $http = new \GuzzleHttp\Client();

  $response = $http->post('http://localhost:8000/oauth/token', [
    'form_params' => [
      'grant_type' => 'password',
      'client_id' => 'my-client_id',
      'client_secret' => 'my-client_secret',
      'username' => request('username'),
      'password' => request('password'),
      'scope' => '',
    ],
  ]);

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

Configuration:

HEADERS

content-type | application/json

BODY : multipart

username:       my-username
password:       my-password

Another thing I tried is to put my controller function in my route directly but it throws the same output.

ERROR/OUTPUT:

(1) $http = new GuzzleHttp\Client; // On my controller this throws an error:

Class 'App\Http\Controllers\Api\GuzzleHttp\Client' not found

(2) $http = new \GuzzleHttp\Client; // On my controller this throws an error:

This request time takes forever. // It took me 500+ seconds and I cancel the request

(3) I put the use Guzzle\Client; and use it like $http = new Client;

This still request takes forever.

(4) I tried the 3rd part and put $http = new Client();

Still request takes forever.

QUESTION

How is there any other way to make a client grant token to may an API request.

I tried this following First and Second but still no luck.

LOGS

[2019-09-25 00:38:06] local.ERROR: Class 'App\Http\Controllers\Api\GuzzleHttp\Client' not found {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Class 'App\\Http\\Controllers\\Api\\GuzzleHttp\\Client' not found at C:\\xampp\\htdocs\\aa\\app\\Http\\Controllers\\Api\\AuthController.php:11)
[stacktrace]
#0 [internal function]: App\\Http\\Controllers\\Api\\AuthController->login(Object(Illuminate\\Http\\Request))
#1 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Controller.php(54): call_user_func_array(Array, Array)
#2 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('login', Array)
#3 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Route.php(219): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\Api\\AuthController), 'login')
#4 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Route.php(176): Illuminate\\Routing\\Route->runController()
#5 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(680): Illuminate\\Routing\\Route->run()
#6 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(130): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#7 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Middleware\\SubstituteBindings.php(41): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#8 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#9 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Middleware\\ThrottleRequests.php(59): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#10 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle(Object(Illuminate\\Http\\Request), Object(Closure), 60, '1')
#11 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(105): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#12 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(682): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#13 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(657): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#14 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(623): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#15 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(612): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#16 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(176): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#17 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(130): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#18 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#19 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#20 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#21 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#22 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#23 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#24 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode.php(62): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#25 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#26 C:\\xampp\\htdocs\\aa\\vendor\\fideloper\\proxy\\src\\TrustProxies.php(57): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#27 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#28 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(105): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#29 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(151): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#30 C:\\xampp\\htdocs\\aa\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#31 C:\\xampp\\htdocs\\aa\\public\\index.php(55): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#32 C:\\xampp\\htdocs\\aa\\server.php(21): require_once('C:\\\\xampp\\\\htdocs...')
#33 {main}
"} 
Japs
  • 977
  • 2
  • 10
  • 19
  • Your (2) is seems correct. I think the issue is `http://localhost:8000` part. How about inject it through env file using: `env("APP_URL")`. If you visit `http://localhost:8000` in your browser does it work? If you use `php artisan serve` maybe check [this answer](https://stackoverflow.com/a/19944781/4705339). Lastly take a look at [both answers here](https://stackoverflow.com/questions/44172818/registering-user-with-laravel-passport) - this is how I achieved the similar thing years ago – senty Sep 25 '19 at 01:08
  • `content-type: application/json` in your headers and `multipart` body do not seem compatible – Phil Sep 25 '19 at 01:10
  • @senty I tried your to put it im my `env('APP_URL')` but still takes forever – Japs Sep 25 '19 at 01:12
  • @Phil the 1st one works well on `content: application/json`. Still I will try to put it in json format – Japs Sep 25 '19 at 01:13
  • @Phil still no luck – Japs Sep 25 '19 at 01:15
  • What do the logs for your `localhost:8000` service say? – Phil Sep 25 '19 at 01:15
  • @Phil where can I see the logs? – Japs Sep 25 '19 at 01:17
  • @phil I edited my question you can see the logs – Japs Sep 25 '19 at 01:30
  • @Doggo how did you managed to work? Any solution? – VijayRana Apr 03 '22 at 16:56
  • @VijayRana i used https://laravel.com/docs/9.x/http-client this instead of guzzle – Japs Apr 05 '22 at 05:30
  • 1
    @Doggo Thanks for your reply. I also managed the same. – VijayRana Apr 05 '22 at 08:45

0 Answers0