web-dev-qa-db-fra.com

Laravel Passport invalid_grant pour le mot de passe grant_type

J'ai essayé de créer un access_token pour mon api. J'ai suivi la configuration et j'utilise Postman pour tester/créer un jeton. Je n'arrive pas à dépasser un invalid_grant Erreur.

J'ai essayé ce qui semble être toutes les combinaisons que j'ai pu trouver sans aucune chance. Voici ma configuration:

Envoi d'une requête POST à: http://mywebsite.local/oauth/token

Dans le corps, je pose form-data à ceci (nom/valeur):

grant_type      password
client_id       1
client_secret   <super_long_string>
username        [email protected]
password        secret

J'ai utilisé bricoler pour créer un utilisateur factice:

factory('App\User')->create()

J'utilise l'utilisateur nouvellement créé pour mon nom d'utilisateur/mot de passe ci-dessus.

Indépendamment de ce que je fais (à moins de ne rien passer), c'est l'erreur que je vois toujours:

{
    "error": "invalid_grant",
    "error_description": "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.",
    "hint": "",
    "message": "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client."
}

J'ai lu plusieurs fois cela signifie que le grant_type J'essaie d'obtenir ne correspond pas au client. J'utilise php artisan passport:client --password pour créer le client, donc je ne comprends pas pourquoi il est invalide. Je n'ai qu'un seul client, donc je sais que j'utilise le bon id. Ce problème semble être la même chose, je vois mais a depuis été fermé.

Pour mes en-têtes, je ne règle que Content-Type application/json, et je n'ai rien défini pour les en-têtes d'autorisation.

Je ne sais pas quoi essayer d'autre. Merci pour vos suggestions!

4
Damon

Essayez de hacher votre mot de passe pour l'utilisateur. Au début, je pense que le mot de passe doit contenir au moins 8 caractères. Ensuite, par exemple si vous utilisez "test1234" comme mot de passe pour l'utilisateur créé, accédez à votre terminal et tapez:

>> bricoleur artisan php

>> echo bcrypt ('test1234')

Copiez la sortie et enregistrez-la dans la colonne de base de données de mots de passe de votre utilisateur créé au lieu de test1234. Maintenant, votre demande de message à http: //mywebsite.local/oauth/token devrait fonctionner.

0
yoola