拉拉维尔护照 试图获得非对象的财产'secret'



我正在使用laravel,并试图用Laravel passport生成Authenthication。所以我通过查看文档和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,但什么都不管用。

NB

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

这适用于LARAVEL 7和LARAVEL/PASSPORT 9.0

第一件事是运行php artisan passport:client --personal

在数据库表oauth_clients中,在name列下,查找Laravel Personal Access Client[/em>。

复制Laravel Personal Access Client旁边的秘密

打开AuthServiceProvider,然后将机密粘贴到boot方法中,其中CLIENT_SECRET如下:

Passport::personalAccessClientSecret(config('CLIENT_SECRET'));

别忘了从数据库中添加机密的ID。

Passport::personalAccessClientId(config('ID'));

注意:将引号与ID和CLIENT_SECRET一起使用,因为config((应该得到一个字符串。

运行以下命令:php artisan passport:install --force,然后重试。

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

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

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

从.env文件中删除这两行对我有效

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

运行命令:php artisan passport:install --force输出将类似于:

成功生成加密密钥。已成功创建个人访问客户端
客户端ID:24332432-2343-3423-8c52-2342333
客户端机密:dfgdfgfdgfdgdfBvV3esUczLMkWsJ
成功创建密码授予客户端
客户端ID:92342333-4233-4343-9234-32423
客户端机密:D3FD5fd5f5dmfmdDmffDmffmdDmfcmdn

打开.env文件,从上面的密码访问客户端行粘贴客户端id和客户端机密,如下所示:

PASSPORT_PERSONAL_ACCESS_CLIENT_ID=24332432-2343-3423-8c52-2342333PASSPORT_PERSONAL_ACCESS_CLIENT_SECRET=dfgdfgfdgfdgdfBvV3esUczLMkWsJ

Passport中唯一使用该名称属性的代码是映射到oauth_clientsDB表的模型LaravelPassportClient,因此我建议检查该表是否已创建并可供您的应用程序访问。

如果您只想为用户进行身份验证,那么passport就太过分了。但是,如果您想要passport,请在这种情况下使用passwordgrant。您使用的是authorizationcodegrant类型,并且您的代码中丢失了机密客户端密钥
https://laravel-news.com/passport-grant-types

我刚刚在.env文件中添加了Passport Personal Access Client的详细信息

PASSPORT_PERSONAL_ACCESS_CLIENT_ID=94d36aec-fca4-46dd-b851-b4ca72a1cfe9
PASSPORT_PERSONAL_ACCESS_CLIENT_SECRET=C73SddSiirwKZzo3JxG0NcwNkASyOEynQq8bTQ3o

最新更新