Passport - 创建客户端凭据以编程方式授予客户端
Passport - Create client credentials grant client programmatically
文档 Here 建议 php artisan passport:client --client
创建客户端,但我想使用控制器来创建客户端,或者理想情况下,使用 passport 提供的本机 JSON api。
这是可能的还是我必须重写 Passport::client
中的方法?
你可以做到
Artisan::call('passport:client --client');
看看Artisan
老问题,但这是 2021 年的答案,供在 Google 上找到此问题的人使用。
我发现从代码中调用 Artisan 命令并不令人愉快,尤其是@kishore-kadiyala 提到的那样,因为您得到的是打印输出,而不是代码。
相反,您可以使用 Laravel\Passport\ClientRepository class 直接创建客户端:
use Laravel\Passport\ClientRepository;
// ... snip ...
$clients = App::make(ClientRepository::class);
// 1st param is the user_id - none for client credentials
// 2nd param is the client name
// 3rd param is the redirect URI - none for client credentials
$client = $clients->create(null, 'My Client Name', '');
这里$client
直接是Laravel\Passport\Client实例。无论如何,这正是 Artisan 命令创建客户端的方式。
文档 Here 建议 php artisan passport:client --client
创建客户端,但我想使用控制器来创建客户端,或者理想情况下,使用 passport 提供的本机 JSON api。
这是可能的还是我必须重写 Passport::client
中的方法?
你可以做到
Artisan::call('passport:client --client');
看看Artisan
老问题,但这是 2021 年的答案,供在 Google 上找到此问题的人使用。
我发现从代码中调用 Artisan 命令并不令人愉快,尤其是@kishore-kadiyala 提到的那样,因为您得到的是打印输出,而不是代码。
相反,您可以使用 Laravel\Passport\ClientRepository class 直接创建客户端:
use Laravel\Passport\ClientRepository;
// ... snip ...
$clients = App::make(ClientRepository::class);
// 1st param is the user_id - none for client credentials
// 2nd param is the client name
// 3rd param is the redirect URI - none for client credentials
$client = $clients->create(null, 'My Client Name', '');
这里$client
直接是Laravel\Passport\Client实例。无论如何,这正是 Artisan 命令创建客户端的方式。