Merhaba arkadaşlar, bugün sizlere Laravel’de sosyal medya girişi (social media login) entegrasyonunu anlatacağım. Sosyal medya girişi, kullanıcıların Facebook, Google, Twitter gibi platformlar üzerinden uygulamanıza kolayca giriş yapmasını sağlar. Bu, kullanıcı deneyimini iyileştirir ve kayıt sürecini hızlandırır. Laravel, bu entegrasyonu kolayca yapmanız için Socialite paketini sunar. Gelin, bu konuları adım adım inceleyelim.
Socialite, Laravel’in sosyal medya girişi entegrasyonu için sunduğu resmi bir pakettir. Bu paket, Facebook, Google, Twitter, GitHub, LinkedIn ve daha birçok platform üzerinden kullanıcı girişi yapmanızı sağlar. Socialite, OAuth 2.0 protokolünü kullanarak güvenli bir şekilde kullanıcı bilgilerini alır.
Socialite paketini projenize eklemek için aşağıdaki komutu çalıştırın:
composer require laravel/socialite
Paketi kurduktan sonra, config/services.php
dosyasında sosyal medya platformlarının kimlik bilgilerini tanımlayın. Örneğin, Google için:
'google' => [ 'client_id' => env('GOOGLE_CLIENT_ID'), 'client_secret' => env('GOOGLE_CLIENT_SECRET'), 'redirect' => env('GOOGLE_REDIRECT_URI'), ],
Bu bilgileri, Google Developer Console’dan alabilirsiniz. .env
dosyasında bu değerleri tanımlayın:
GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret GOOGLE_REDIRECT_URI=http://your-app.com/auth/google/callback
Sosyal medya girişi için route ve controller oluşturmanız gerekiyor. Örneğin, Google girişi için:
Route Tanımı:
use App\Http\Controllers\Auth\SocialLoginController; Route::get('/auth/google', [SocialLoginController::class, 'redirectToGoogle']); Route::get('/auth/google/callback', [SocialLoginController::class, 'handleGoogleCallback']);
Controller Kodu:
namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Laravel\Socialite\Facades\Socialite; use App\Models\User; use Illuminate\Support\Facades\Auth; class SocialLoginController extends Controller { public function redirectToGoogle() { return Socialite::driver('google')->redirect(); } public function handleGoogleCallback() { $googleUser = Socialite::driver('google')->user(); $user = User::firstOrCreate( ['email' => $googleUser->email], [ 'name' => $googleUser->name, 'password' => bcrypt(Str::random(16)), ] ); Auth::login($user); return redirect('/dashboard'); } }
Bu kod, Google girişi için kullanıcıyı yönlendirir ve geri döndüğünde kullanıcı bilgilerini alır. Eğer kullanıcı daha önce kayıtlı değilse, otomatik olarak kaydeder ve giriş yapar.
Blade template’de sosyal medya giriş butonları oluşturmak için aşağıdaki gibi bir yapı kullanabilirsiniz:
<!-- resources/views/auth/login.blade.php --> <a href="{{ url('/auth/google') }}" class="btn btn-google"> <i class="fab fa-google"></i> Google ile Giriş Yap </a>
Bu kod, Google girişi için bir buton oluşturur.
Socialite, Facebook, Twitter, GitHub gibi diğer platformlar için de benzer bir yapı sunar. Örneğin, Facebook girişi için:
Route Tanımı:
Route::get('/auth/facebook', [SocialLoginController::class, 'redirectToFacebook']); Route::get('/auth/facebook/callback', [SocialLoginController::class, 'handleFacebookCallback']);
Controller Kodu:
public function redirectToFacebook() { return Socialite::driver('facebook')->redirect(); } public function handleFacebookCallback() { $facebookUser = Socialite::driver('facebook')->user(); $user = User::firstOrCreate( ['email' => $facebookUser->email], [ 'name' => $facebookUser->name, 'password' => bcrypt(Str::random(16)), ] ); Auth::login($user); return redirect('/dashboard'); }
Bu kod, Facebook girişi için benzer bir yapı sunar.
Laravel’de sosyal medya girişi entegrasyonu, kullanıcı deneyimini iyileştirmenin ve kayıt sürecini hızlandırmanın en etkili yollarından biridir. Eğer kullanıcılarınızın uygulamanıza kolayca erişmesini sağlamak istiyorsanız, Socialite paketini mutlaka kullanmalısınız. Bir sonraki yazımda, Laravel’de Payment Gateway Entegrasyonu: Stripe ve PayPal konusuna değineceğim. Görüşmek üzere!