Laravel Passport 获取访问令牌提示invalid_grant的解决办法
今天在使用passport 获取token令牌时,按照文档步骤操作的,结果显示invalid_grant,有如下三种解决思路
今天在使用passport 获取token令牌时,按照文档步骤操作的,结果显示invalid_grant
出现这个错误提示有如下几个解决方案
1、检查用户名和密码是否正确,不正确的话,也是这个提示,如果正确的话,就继续往下看
2、oauth/token 请求的参数 usename 字段对应的默认模型 User 的字段是 email,所以如果你没有email字段或者用户名等信息,并不是已email为主要的,可以通过在模型上定义 findForPassport 方法来自定义此行为:
<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
/**
* 查找给定用户名的用户实例。
*
* @param string $username
* @return \App\Models\User
*/
public function findForPassport($username)
{
return $this->where('username', $username)->first();
}
}
3、还有一种情况就是密码的加密逻辑并不是laravel自带的加密逻辑,想要自定义加密逻的话,就在模型上定义 validateForPassportPasswordGrant 方法:
<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Hash;
use laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
/**
* 验证用户的密码以获得 Passport 密码授权。
*
* @param string $password
* @return bool
*/
public function validateForPassportPasswordGrant($password)
{
return Hash::check($password, $this->password);
}
}
以上这篇laravel Passport 获取访问令牌提示invalid_grant的解决办法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持芦苇派。
原创文章,作者:ECHO陈文,如若转载,请注明出处:https://www.luweipai.cn/php/1670142690/