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:




Click New Project  and Update  your application details:







   After Update  Click  Credentials-> Oauth Client ID



   Select Application 

     

    Add Call Back Url






Add Client ID and  Secret ID  IN ENV file







Env:

 





















Comments

Popular posts from this blog

Laravel Notifications | Laravel Notify Using GMail to Send Invoice Details:

Laravel Localization: Step By Step Guide | Language Translation