После настройки паспорта я настроил и создал контроллер для управления регистрацией-логином и доступом к ресурсу для общего внешнего почтового запроса. Мне не нужно для конкретного клиента. Но когда я пытаюсь создать токен в регистрации или в логине:
$tokenObj=$user->createToken('APPLICATION')->accessToken;
Ошибка:
RuntimeException: Personal access client not found. Please create one. in file C:\xampp7.1\htdocs\passport\vendor\laravel\passport\src\ClientRepository.php on line 94 Stack trace: 1. RuntimeException->() C:\xampp7.1\htdocs\passport\vendor\laravel\passport\src\ClientRepository.php:94 2. Laravel\Passport\ClientRepository->personalAccessClient() C:\xampp7.1\htdocs\passport\vendor\laravel\passport\src\PersonalAccessTokenFactory.php:71
Как я могу это решить?






Сначала необходимо создать клиентов доступа. Это задокументировано здесь. Клиент доступа — это не то же самое, что токен пользователя, у вас может быть один клиент доступа и много пользователей с разными паролями и токенами.
для меня это решилось запуском
php artisan passport:install
потому что это произошло после обновления моей базы данных.
В дополнение к комментарию namelivia. Как говорит документ Laravel:
Before your application can issue personal access tokens, you will need to create a personal access client. You may do this using the passport:client command with the --personal option. If you have already run the passport:install command, you do not need to run this command:
php artisan passport:client --personal
Но если вы не выполнили команду:
php artisan passport:install
Вы должны запустить его в первую очередь.
Если вас не беспокоит имя, просто используйте php artisan passport:client --personal --no-interaction
После запуска команды
php artisan passport:client --personal
и дать вам эту подсказку
What should we name the personal access client? [Artisan Personal Access Client]:
не волнуйтесь, просто введите любое имя и нажмите клавишу ввода.
Если вас не беспокоит имя, просто используйте php artisan passport:client --personal --no-interaction
Просто запустите эту команду
php artisan passport:install --force
у меня была одна и та же ошибка снова и снова, но я не знал, как ее воспроизвести, но я понял, почему.
когда вы выполняете php artisan passport:install, он сохраняет два идентификатора клиентов в базе данных после команды мигрировать, но если вы снова свежая миграция, очевидно, что вы потеряете эти два предыдущих идентификатора, поэтому эта ошибка была показана после выполнения команды установки.
ОБНОВИТЬphp artisan passport:install -f заставит воссоздать идентификаторы для новой перенесенной базы данных.
я должен звонить
php artisan passport:install
каждый раз, когда я бегу
php artisan:migrate
есть способ сделать это правильно?
Я думаю, что вам нужно бежать php artisan passport:install --force только после того, как вы бегаете php artisan migrate:fresh.
Есть ли способ запуска этой команды автоматически после обновления базы данных?