Laravel Socialite |Socialite: Creating a Social Login in Laravel Part 1
Socialite: Creating a Social Login In Laravel with Socialite
Step1: Install Laravel Socialite
composer require laravel/socialite
Step2: Create Controller for Login
Php artisan make:controller LoginController
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Laravel\Socialite\Facades\Socialite;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function logout (Request $request){
auth()->logout();
Session()->flush();
return redirect()->back();
}
public function Social_login()
{
return Socialite::driver('google')->stateless()->redirect();
}
public function handle_login(Request $request)
{
try {
$user = Socialite::driver('google')->stateless()->user();
$logUser = User::where('google_id', $user->id)->first();
if ($logUser!=null) {
Auth::login($user);
return redirect()->intended('home');
} else {
$newUser = User::create([
'name' => $user->name,
'email' => $user->email,
'google_id' => $user->id,
]);
Auth::login($newUser);
return redirect()->intended('home');
}
} catch (\Exception $e) {
dd( $e->getMessage());
return redirect('/login');
}
}
}
Step3: Web.php (route)
Route::any('/google-callback', [App\Http\Controllers\Auth\LoginController::class,'handle_login']);
Route::any('login/callback/google', [App\Http\Controllers\Auth\LoginController::class,'Social_login']);
Step4: Added in Service.php
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_REDIRECT'),
],
Step5:Create Google Client ID and Client Secret
Open the URL in Browser:
Click API & Service ->OAuth consent screen->
Click Popup Button mentioned in Image:
Select Application
Add Client ID and Secret ID IN ENV file
Comments
Post a Comment