首页 > 解决方案 > Laravel Passport 试图获取非对象的属性“秘密”

问题描述

我正在使用 laravel 并尝试Authenthication使用Laravel passport. 所以我通过查看文档和 youtube 来完成它,但我得到了这个错误。这是我AuthController的要求和错误。

AuthController.php

public function register(Request $request) 
    {
        $validatedData = $request->validate([
            'name'=>'required|max:55',
            'email'=>'email|required|unique:users',
            'password'=>'required|confirmed',
            'who'=>'required'
        ]);

        $validatedData['password'] = bcrypt($request->password);

        $user = User::create($validatedData);

        // Get access token
        $accessToken = $user->createToken('authToken')->accessToken;

        return response(['user' => $user, 'access_token' => $accessToken]);
    }

错误异常

{
    "message": "Trying to get property 'secret' of non-object",
    "exception": "ErrorException",
    "file": "C:\\Panji\\xampp\\htdocs\\papa\\vendor\\laravel\\passport\\src\\PersonalAccessTokenFactory.php",
    "line": 96,
    "trace": [
        {
            "file": "C:\\Panji\\xampp\\htdocs\\papa\\vendor\\laravel\\passport\\src\\PersonalAccessTokenFactory.php",
            "line": 96,
            "function": "handleError",
            "class": "Illuminate\\Foundation\\Bootstrap\\HandleExceptions",
            "type": "->"
        },
        {
            "file": "C:\\Panji\\xampp\\htdocs\\papa\\vendor\\laravel\\passport\\src\\PersonalAccessTokenFactory.php",
            "line": 71,
            "function": "createRequest",
            "class": "Laravel\\Passport\\PersonalAccessTokenFactory",
            "type": "->"
        },
        {
            "file": "C:\\Panji\\xampp\\htdocs\\papa\\vendor\\laravel\\passport\\src\\HasApiTokens.php",
            "line": 67,
            "function": "make",
            "class": "Laravel\\Passport\\PersonalAccessTokenFactory",
            "type": "->"
        },
        {
            "file": "C:\\Panji\\xampp\\htdocs\\papa\\app\\Http\\Controllers\\Api\\AuthController.php",
            "line": 26,
            "function": "createToken",
            "class": "App\\User",
            "type": "->"
        },
        {
            "function": "register",
            "class": "App\\Http\\Controllers\\Api\\AuthController",
            "type": "->"
        },
        {
            "file": "C:\\Panji\\xampp\\htdocs\\papa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Controller.php",
            "line": 54,
            "function": "call_user_func_array"
        },
        {
            "file": "C:\\Panji\\xampp\\htdocs\\papa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\ControllerDispatcher.php",
            "line": 45,
            "function": "callAction",
            "class": "Illuminate\\Routing\\Controller",
            "type": "->"
        },
        {
            "file": "C:\\Panji\\xampp\\htdocs\\papa\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Route.php",
            "line": 225,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\ControllerDispatcher",
            "type": "->"
        },
.
.
.
}

我在谷歌上搜索过它,但我找不到任何提到的东西Trying to get property 'secret' of non-object。我已经尝试过php artisan passport:install,所以我得到了personal_access_clients,但没有任何工作。

注意

它实际上注册了用户,但得到了这个错误响应。

标签: phplaraveleloquentlaravel-passport

解决方案


在项目中使用 Passport 时遇到了类似的错误。从移动应用程序注册用户时获取响应 - 使用 OTP 而不是密码进行注册。

对我来说,错误是由于执行 a 引起的,php artisan migrate:fresh因为这是删除数据库中存在的所有oauth数据。

因此,只需php artisan passport:client --personal在运行新迁移后使用,错误就解决了。


推荐阅读