Laravel Passport không đọc được khóa mã hóa OAuth:
Vì vậy các API gọi auth() đều trả 500, gồm:
Log đã xác định chính xác nguyên nhân:
`Laravel Passport` không đọc được khóa mã hóa OAuth:
```text
LogicException: Invalid key supplied
vendor/league/oauth2-server/src/CryptKey.php:67
```
Vì vậy các API gọi `auth()` đều trả `500`, gồm:
- Category
- Service
- Cart
- Provider
- Advertisement
- Các API yêu cầu xác thực khác
Đây là lỗi phía server `tidy.vn`, không phải Flutter. Khả năng cao một trong các nguyên nhân:
- `PASSPORT_PRIVATE_KEY` hoặc `PASSPORT_PUBLIC_KEY` trong `.env` bị thiếu/sai định dạng PEM.
- Khóa bị xuống dòng sai hoặc bị đặt trong dấu nháy không đúng.
- File `storage/oauth-private.key` hoặc `storage/oauth-public.key` bị mất.
- Quyền đọc file không đúng.
- Laravel đang dùng config cache cũ sau khi thay đổi `.env`.
Thực hiện trên server:
```bash
cd /var/www/tidy.vn/public_html
php artisan passport:keys --force
php artisan optimize:clear
php artisan config:cache
```
Sau đó kiểm tra quyền:
```bash
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage bootstrap/cache
```
Nếu đang dùng key trong `.env`, phải bảo đảm key là PEM hợp lệ, bắt đầu bằng:
```text
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
```
và public key:
```text
-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----
```
Lưu ý: `passport:keys --force` có thể làm token hiện tại không còn hợp lệ, người dùng sẽ phải đăng nhập lại. Sau khi sửa, restart PHP-FPM/opcache rồi gọi lại các endpoint category/service.
Book and manage your services anytime, anywhere.