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/

  • 0