【问题标题】:401 Unauthorized when creating Password Grant Tokens with laravel passport使用 laravel 护照创建密码授予令牌时出现 401 Unauthorized
【发布时间】:2023-03-27 21:40:01
【问题描述】:

我创建了一个带有护照的 api,并希望使用密码授予令牌,因为它更多的是应用程序与应用程序的交互。但是当我尝试访问它时出现以下错误。

GuzzleHttp\Exception\ClientException
Client error: `POST http://127.0.0.1:8000/oauth/token` resulted in a `401 Unauthorized` response: {"error":"invalid_client","error_description":"Client authentication failed","message":"Client authentication failed"}

我的路线

Route::get('/get_token_by_password', function (Request $request) {

    $http = new GuzzleHttp\Client;

    $response = $http->post('http://192.168.0.103:8000/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => 13,
        'client_secret' => 'f37AwQGsVMiZDVu786KiRdbpn4MXYSBWCvqNcqiC',
        'username' => 'developer@ymail.com',
        'password' => '123456789',
        'scope' => '*',
    ],
]);

return json_decode((string) $response->getBody(), true);

})->name('get_token_by_password');
  1. 我可能做错了什么?

  2. 另外,如何使用邮递员获取令牌?

  3. 我如何获得一个链接,以便在其他想要使用我的 api 的应用程序中使用

【问题讨论】:

    标签: laravel api oauth laravel-passport laravel-api


    【解决方案1】:

    请求似乎正确。检查您是否有正确的密钥和客户端。之后,在 DB 中检查 client_secret 的新值。

    php artisan passport:keys
    
    php artisan passport:client --password
    

    【讨论】:

    • 运行该命令后,客户端 ID 和密码起作用了。我检查了数据库并意识到有字段 password_client 设置为 1。现在我使用提供的 vue 仪表板来生成客户端。我更改了我创建的密码客户端字段,该字段设置为 0 到 1,它也可以工作。那么当我使用仪表板时如何将值设置为 1
    【解决方案2】:

    您的客户端 ID 和/或客户端密码不正确,因为错误是“invalid_client”。

    【讨论】:

      猜你喜欢
      • 2017-10-05
      • 1970-01-01
      • 2017-04-09
      • 2021-03-08
      • 1970-01-01
      • 2020-01-14
      • 2017-07-09
      • 2017-12-14
      • 2018-02-01
      相关资源
      最近更新 更多