我一直试图为我的api创建一个access_token。我已经使用按照设置,并且正在使用邮递员测试/创建一个令牌。我似乎无法克服invalid_grant错误。
我已经尝试了所有我能找到的没有任何运气的组合。这是我的设置:
将POST请求发送到:http://mywebsite.local/oauth/token
在正文中,我将form-data设置为以下(名称/值):
grant_type password
client_id 1
client_secret <super_long_string>
username my@email.com
password secret我使用tinker创建了一个虚拟用户:
factory('App\User')->create()我将新创建的用户用于上面的用户名/密码。
不管我在做什么(除了没有传递任何东西),这是我经常看到的错误:
{
"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."
}我已经读过很多次了,这意味着我试图获得的grant_type与客户端不匹配。我使用php artisan passport:client --password来创建客户机,所以我不明白它为什么无效。我只有一个客户端,所以我知道我使用的是正确的id。这个问题似乎是一样的,我看到了,但后来被关闭了。
对于我的标题,我只设置Content-Type application/json,而授权头没有设置任何设置。
我不知道还能尝试什么。谢谢您的建议!
发布于 2020-02-12 15:25:35
正如所述的这里,从5.8版本的默认密码“机密”已经更新为“密码”。所以你要输入旧密码。
发布于 2020-04-24 12:10:43
尝试为用户散列密码。首先,我认为密码至少需要8个字符长。然后,例如,如果您使用"test1234“作为创建用户的密码,请转到您的终端并键入:
php工匠修补工 回声bcrypt('test1234')
复制输出并将其保存在您创建的用户的密码数据库列中,而不是test1234。现在,您对http://mywebsite.local/oauth/token的帖子请求应该可以工作了。
发布于 2021-11-08 09:46:35
我在laravel 8中遇到了同样的问题,我通过重新安装laravel passport来解决这个问题。
这些步骤如下:
1-在AuthServiceProvider.php中注释这一行
if (! $this->app->routesAreCached()) {
//Passport::routes();
}2-在composer.json中删除以下一行:
"laravel/passport": "^xx.x",3-运行以下命令:
composer dump-autoload
composer update
php artisan migrate:fresh现在我们要安装laravel passport 4的-运行以下命令:
composer require laravel/passport
php artisan migrate
php artisan passport:install --force5-在AuthServiceProvider.php中添加以下行:
use Laravel\Passport\Passport;
class AuthServiceProvider extends ServiceProvider
{
protected $policies = [
'App\Models\Model' => 'App\Policies\ModelPolicy',
];
public function boot()
{
$this->registerPolicies();
if (! $this->app->routesAreCached()) {
Passport::routes();
}
}
}6-在config\auth.php中添加以下代码:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],完成这些步骤之后,laravel-passport运行良好
https://stackoverflow.com/questions/60123601
复制相似问题