- 不好意思,菜雞的我又要來水了
安裝passport
composer require laravel/passport ‘7.5.0’
- 注:我安裝的時候沒有一開始沒有加版本號,然後就報瞭如下錯:
Installation failed, reverting ./composer.json to its original content.
加了版本號就好了
執行遷移
php artisan migrate
這一步我也不知道該怎麼說了
php artisan passport:install
修改檔案
- 在
User
模型中,加入use Laravel\Passport\HasApiTokens;
然後在類中引用該traituse Notifiable,HasApiTokens;
- 在
Providers/AuthServiceProvider.php
的boot
方法中加入:Passport::routes();
- 修改
config/auth.php
檔案中的guards
中的api
中的driver
為passport
為了實現註冊後就直接登入,還需安裝guzzlehttp
版本可以自選
composer require guzzlehttp/guzzle '6.5.2'
註冊程式碼
class RegisterController extends Controller
{
private $http;
public function __construct(Client $http)
{
$this->http = $http;
}
public function register(RegisterRequest $request)
{
// 建立使用者
User::create([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => bcrypt($request->input('password'))
]);
// 獲取建立使用者的access_token作為登入憑證,登入的時候其實也是這樣獲取access_token的
$response = $this->http->post('http://api.test/oauth/token', [
'form_params' => [
"grant_type" => "password",
// 此處用的是使用者郵箱驗證
"username" => $request->input('email'),
"password" => $request->input('password'),
// 此處是oauth_clients資料表中有兩個值,用的是id=2的值
"client_id" => "2",
"client_secret" => "LQ1a8TAUMjXw3CBpwGR2uLXlNWOuqJOG7Cpsnprq",
// 設定api的範圍許可權全域性訪問
"scope" => "*"
]
]);
$token = json_decode((string)$response->getBody(), true);
return response()->json([
'token' => $token
], 201);
}
}
- 返回內容如下
- 在返回的內容中有
access_token
,可以拿他獲取使用者資訊
en菜鳥的我就是這樣實現的
本作品採用《CC 協議》,轉載必須註明作者和本文連結