Паспорт уже установлен, но клиент личного доступа не найден

Я уже давно настроил Laravel API с Passport (Password Grant) для Nuxt, у меня нет проблем с регистрацией пользователей, но теперь мне нужно вручную создать токен доступа для определенной цели.

Однако, когда я пытаюсь создать токен для пользователя, как показано ниже, я получаю сообщение об ошибке:

$user = MyCompany\MyPackage\Models\User::find(123);
$user->createToken('my token')

   RuntimeException  Personal access client not found. Please create one.

Чего не хватает в моей конфигурации?

Ниже моя модель пользователя:

<?php
namespace MyCompany\MyPackage\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Hash;
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable implements MustVerifyEmail
{
    use HasApiTokens;
    use Notifiable;

    ...

}

ты сделал php artisan passport:client --personal ?

francisco 03.04.2023 16:22

@francisco Нет, я не ... Интерфейс Nuxt отлично работает с API Laravel и Passport, в котором уже хранятся пользовательские токены oauth_access_tokens, которые я могу отозвать с помощью $request->user()->token()->revoke(), что изменит эта команда?

DevonDahon 03.04.2023 16:31

@francisco На самом деле, у меня уже есть идентификаторы клиентов, используемые тремя разными интерфейсами. Использование php artisan passport:client --personal просто создает новый.

DevonDahon 03.04.2023 16:44

Чтобы использовать createTokens(), вам нужно иметь токен personal access в БД. Вы можете иметь на своей БД много клиентских IDS, для (пароль, клиентский грант). проверить вас .env и поставить личный идентификатор/секрет на PASSPORT_PERSONAL_ACCESS_CLIENT_ID=client-id-valuePASSPORT_PERSONAL_ACCESS_CLIENT_SECRET=unhashed-client-secre‌​t-value

francisco 03.04.2023 18:21

@francisco Это сработало, спасибо! Но что, если я хочу использовать другой client-id-value?

DevonDahon 04.04.2023 09:13

что я не знаю. Почему вам нужно больше личных токенов в приложении laravel?

francisco 04.04.2023 16:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
6
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы использовать createTokens(), вам нужно иметь токен personal access в БД, и вы можете использовать команду php artisan passport:client --personal.

У вас может быть в БД много клиентских IDS для пароля, клиентского гранта.

На свой .env поместите личный идентификатор/секрет:

PASSPORT_PERSONAL_ACCESS_CLIENT_ID=client-id-value
PASSPORT_PERSONAL_ACCESS_CLIENT_SECRET=unhashed-client-secret-value

Другие вопросы по теме