В наше время пользователи меньше взаимодействуют с веб-сайтом. Вы хотите зарегистрировать пользователей на своей платформе. Вы должны упростить процесс регистрации и входа для вашего приложения. Laravel предоставляет пакет socialite для упрощения этого процесса, т.е. за минимальное количество шагов пользователи могут подключиться к вашему приложению. В этой статье мы реализуем вход с помощью google в приложении laravel.
Пошаговое руководство по входу в систему google в приложении laravel
- Установите пакетУстановите пакет Socialite на приложение laravel. Выполните следующую команду.
composer require laravel/socialite
- Настройте учетные данныеСмотрите скриншот для получения учетных данных google. Нажмите здесь, чтобы создать учетные данные на платформе google.
Вы можете добавить учетные данные в файл env и добавить переменную окружения в файл config/services.php напротив переменной google, как показано ниже:
GOOGLE_AUTH_CLIENT_ID=XXXXXXXXXXXXXXXX
GOOGLE_AUTH_CLIENT_SECRET=XXXXXXXXXXXXX
GOOGLE_AUTH_URL=http://127.0.0.1:8000/auth/google
Файл services.php выглядит так, как показано ниже:
'google'=>[
'client_id' => env('GOOGLE_AUTH_CLIENT_ID'),
'client_secret' => env('GOOGLE_AUTH_CLIENT_SECRET'),
'redirect'=> env('GOOGLE_AUTH_URL')
]
- Создайте столбец миграции в таблице пользователяСделайте файл миграции, который создаст столбец в таблице пользователя. Запустите команду migration в вашем приложении.
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
class AddGoogleIdColumn extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function ($table) {
$table->string('google_id')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropColumns('google_id');
}
}
Добавьте поле google_id в свойство fillable в файле User.php.
protected $fillable = [
'name',
'email',
'password',
'google_id'
];
- Создание контроллера для социального входаВы можете создать контроллер для социального входа и загрузить драйверы для социального входа. Я собираюсь загрузить драйвер google.
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use LaravelSocialiteFacadesSocialite;
use Exception;
use InertiaInertia;
use IlluminateSupportFacadesRoute;
use AppModelsUser;
use IlluminateSupportFacadesAuth;
class SocialController extends Controller
{
public function redirectToGoogle()
{
return Socialite::driver('google')->redirect();
}
public function handleGoogleCallback()
{
try {
$user = Socialite::driver('google')->user();
$finduser = User::where('google_id', $user->id)->first();
if($finduser){
Auth::login($finduser);
return redirect('/');
}else{
$checkUser = User::where('email', $user->email)->first();
if($checkUser) {
$checkUser->google_id = $user->id;
$checkUser->save();
Auth::login($checkUser);
} else {
$newUser = User::create([
'name' => $user->name,
'email' => $user->email,
'google_id'=> $user->id,
'password' => encrypt('123456dummy')
]);
Auth::login($newUser);
}
return redirect('/');
}
} catch (Exception $e) {
return Inertia::render('Auth/Login', [
'canResetPassword' => Route::has('password.request'),
'status' => 'Something Went wrong!! Try later',
]);
}
}
}
Нажмите здесь