composer require laravel/socialite
http://127.0.0.1:8000/api/auth/facebook/callback
Copy:
FACEBOOK_CLIENT_ID=your_facebook_app_id FACEBOOK_CLIENT_SECRET=your_facebook_app_secret FACEBOOK_REDIRECT_URI=http://127.0.0.1:8000/api/auth/facebook/callback
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => env('FACEBOOK_REDIRECT_URI'),
],
π routes/api.php
use App\Http\Controllers\Api\Auth\FacebookLoginController;
Route::get('/auth/facebook', [FacebookLoginController::class, 'redirectToFacebook']);
Route::get('/auth/facebook/callback', [FacebookLoginController::class, 'handleFacebookCallback']);
π app/Http/Controllers/Api/Auth/FacebookLoginController.php
namespace App\Http\Controllers\Api\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use Laravel\Socialite\Facades\Socialite;
use Illuminate\Support\Str;
class FacebookLoginController extends Controller
{
public function redirectToFacebook()
{
return Socialite::driver('facebook')
->stateless()
->redirect();
}
public function handleFacebookCallback()
{
try {
$facebookUser = Socialite::driver('facebook')
->stateless()
->user();
$user = User::where('email', $facebookUser->getEmail())->first();
if (!$user) {
$user = User::create([
'name' => $facebookUser->getName(),
'email' => $facebookUser->getEmail(),
'facebook_id' => $facebookUser->getId(),
'password' => bcrypt(Str::random(16)),
]);
}
$token = $user->createToken('API Token')->plainTextToken;
return response()->json([
'success' => true,
'user' => $user,
'token' => $token,
]);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => 'Facebook login failed',
'error' => $e->getMessage()
], 500);
}
}
}
php artisan make:migration add_facebook_id_to_users_table
Schema::table('users', function (Blueprint $table) {
$table->string('facebook_id')->nullable()->unique();
});
php artisan migrate
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
{
"success": true,
"user": {
"id": 5,
"name": "Milon Hossain",
"email": "milon@example.com",
"facebook_id": "1023344556677"
},
"token": "1|xYzAbCdEf123456"
}