I have installed Laravel Passport per the documentation and I have modified all areas of my code that is required.
I am working on setting up Password Grant Tokens so that users will be able to get an API token when logging in with their username and password for the site. I am hitting an issue though when it comes to the grant_type. For some reason Laravel is complaining about an invalid grant type.
{ "error": "unsupported_grant_type", "message": "The authorization grant type is not supported by the authorization server.", "hint": "Check the `grant_type` parameter" } These are the fields that I am posting to /oauth/token
client_id = 4 client_secret = SMiYE7XqDNtXKQnmkYmFnXxfAaV83vRhnJ9zwCtZ username = [email protected] password = ************** grant_type = password scope = * I have run php artisan passport:install and I have also tried running php artisan passport:client --password
Both commands worked and both created the client and secrets, however, I cannot seem to get past the error about the grant_type.
Any suggestions on what I should look at to get this solved so that Password Grant Tokens will work for me?
5 Answers
It appears that you must send the parameters as form data and not in the headers like I was doing... Rookie Mistake!
2I'm using Postman and I have put all parameters in Params. Postman shows the following response
{ "error": "unsupported_grant_type", "message": "The authorization grant type is not supported by the authorization server.", "hint": "Check the `grant_type` parameter" } Now I put all parameters in Body and then press the Send button, It's working well.
For me the problem was that i wasnt using Request $request, i was using RegisterRequest $request which i had created.
Initial URL
Solution
I had to replace the question mark before response_type with the &
Reading the Laravel documentation saved me a lot of stress. The oauth\token is used to retrieve token using the grant type specified, the route will return a JSON response containing access_token, refresh_token, and expires_in attributes. The expires_in attribute contains the number of seconds until the access token expires (ref) You are meant to
- Install passport
- Publish the service providers and migrations and migrate.
- Setup a route for login/register to create an account and login.
- In your User model, add
HasApiTokensfrom use Laravel\Passport\HasApiTokens; - In your response in your login method, add the token as part of the response.

- Test your response on postman
