Laravel Passport - Grant Type Not Supported

37.2k views Asked by At

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

There are 5 answers

2
Joseph Crawford On BEST ANSWER

It appears that you must send the parameters as form data and not in the headers like I was doing... Rookie Mistake!

1
Alican Ali On

For me the problem was that i wasnt using Request $request, i was using RegisterRequest $request which i had created.

0
Abdullahi Abdulkabir On

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

  1. Install passport
  2. Publish the service providers and migrations and migrate.
  3. Setup a route for login/register to create an account and login.
  4. In your User model, add HasApiTokens from use Laravel\Passport\HasApiTokens;
  5. In your response in your login method, add the token as part of the response. enter image description here
  6. Test your response on postman enter image description here
1
MT_Shikomba On

Initial URL

https://restfulapi.test/oauth/authorize?client_id=3&redirect_url=http://restfulapi.test?response_type=code

Solution

https://restfulapi.test/oauth/authorize?client_id=3&redirect_url=http://restfulapi.test&response_type=code

I had to replace the question mark before response_type with the &

0
Muhammad Hashim On

I'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.