Home PHP Framework Laravel Laravel development: How to implement social login using Laravel Socialite and Facebook?

Laravel development: How to implement social login using Laravel Socialite and Facebook?

Jun 13, 2023 am 11:39 AM
laravel facebook socialite

Laravel is a popular PHP web application development framework that provides concise and elegant syntax to help developers build applications faster. Laravel Socialite is a plug-in for Laravel that helps you implement social login using APIs provided by social media platforms such as Facebook, Twitter, and Google. In this article, we will introduce how to implement social login using Laravel Socialite and Facebook.

  1. Installing Laravel Socialite

To use Laravel Socialite with Laravel, you need to install it first. You can install Laravel Socialite in your Laravel project using Composer. In the terminal, navigate to the project directory and execute the following command to install:

1

composer require laravel/socialite

Copy after login
  1. Create Facebook application and obtain application credentials

Before logging in with Facebook, You need to create a Facebook application. First, log into the Facebook Developers website at https://developers.facebook.com and create a new application using your Facebook credentials.

After creating the app, get the app credentials, click "Settings" -> "Basic" and copy your App ID and App Secret (Secret Key) into any text editor, we You will need them later.

  1. Modify env file

Find the ".env" file in the root directory of your Laravel project and add the following content to the bottom of the file:

1

2

3

FACEBOOK_ID=your_facebook_app_id_here

FACEBOOK_SECRET=your_facebook_app_secret_here

FACEBOOK_CALLBACK_URL=http://your_website_url_here/auth/facebook/callback

Copy after login

Please replace the text in "your_facebook_app_id_here" and "your_facebook_app_secret_here" with the "App ID" and "Secret Key" you obtained from the Facebook developer website. Please make sure to add /auth/facebook/callback at the end of the FACEBOOK_CALLBACK_URL value to redirect to your application's callback URL after a successful Facebook login.

  1. Create routes and controllers

To implement Facebook login, we need to create two routes and a controller. The route will direct the user to Facebook and the Facebook login callback.

1

2

3

4

5

6

7

//引导用户前往 Facebook 登录页面

Route::get('facebook', function () {

    return Socialite::driver('facebook')->redirect();

});

 

//Facebook 登录回调

Route::get('auth/facebook/callback', 'AuthFacebookController@handleCallback');

Copy after login

The controller is needed to handle responses from Facebook and create or update users in your application. Create FacebookController using the following command:

1

php artisan make:controller Auth/FacebookController

Copy after login

In FacebookController, we need to write handleCallback method to handle Facebook response and create or update users in the database.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

<?php

namespace AppHttpControllersAuth;

use AppUser;

use IlluminateHttpRequest;

use AppHttpControllersController;

use LaravelSocialiteFacadesSocialite;

class FacebookController extends Controller {

    public function handleCallback(Request $request) {

        try {

            // 从 Facebook 获取用户信息

            $user = Socialite::driver('facebook')->user();

        } catch (Exception $e) {

            // 如果 Facebook 验证失败,重定向到登录页

            return redirect('login');

        }

        // 查找用户

        $authUser = $this->findOrCreateUser($user);

        // 登录用户

        auth()->login($authUser, true);

        // 重定向到应用程序首页

        return redirect()->route('home');

    }

    private function findOrCreateUser($facebookUser) {

        // 根据 Facebook 用户 ID 和服务提供商名称查找用户

        $authUser = User::where('facebook_id', $facebookUser->getId())

            ->where('provider', 'facebook')

            ->first();

        if ($authUser) {

            return $authUser;

        }

        // 如果未找到该用户,创建一个新用户

        return User::create([

            'name' => $facebookUser->getName(),

            'email' => $facebookUser->getEmail(),

            'facebook_id' => $facebookUser->getId(),

            'provider' => 'facebook',

            'avatar' => $facebookUser->getAvatar(),

            'password' => md5(rand(1,10000)),

        ]);

    }

}

Copy after login

Note that here we use md5(rand(1,10000)) to set the user’s random password.

  1. At this point, the implementation of social login is completed.

Now you can access the "/facebook" route of the application and can complete the login process by clicking on Facebook login.

Using Laravel Socialite and Facebook, implementing social login becomes very simple and can greatly reduce your workload. Laravel and some other PHP frameworks provide developers with many easy-to-use tools to build great web applications, such as social login here.

The above is the detailed content of Laravel development: How to implement social login using Laravel Socialite and Facebook?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Laravel - Artisan Commands Laravel - Artisan Commands Aug 27, 2024 am 10:51 AM

Laravel - Artisan Commands

Comparison of the latest versions of Laravel and CodeIgniter Comparison of the latest versions of Laravel and CodeIgniter Jun 05, 2024 pm 05:29 PM

Comparison of the latest versions of Laravel and CodeIgniter

How do the data processing capabilities in Laravel and CodeIgniter compare? How do the data processing capabilities in Laravel and CodeIgniter compare? Jun 01, 2024 pm 01:34 PM

How do the data processing capabilities in Laravel and CodeIgniter compare?

Laravel vs CodeIgniter: Which framework is better for large projects? Laravel vs CodeIgniter: Which framework is better for large projects? Jun 04, 2024 am 09:09 AM

Laravel vs CodeIgniter: Which framework is better for large projects?

Bitget Exchange official website login latest entrance Bitget Exchange official website login latest entrance Feb 18, 2025 pm 02:54 PM

Bitget Exchange official website login latest entrance

A list of historical prices since the birth of Bitcoin BTC historical price trend chart (Latest summary) A list of historical prices since the birth of Bitcoin BTC historical price trend chart (Latest summary) Feb 11, 2025 pm 11:36 PM

A list of historical prices since the birth of Bitcoin BTC historical price trend chart (Latest summary)

Which one is more beginner-friendly, Laravel or CodeIgniter? Which one is more beginner-friendly, Laravel or CodeIgniter? Jun 05, 2024 pm 07:50 PM

Which one is more beginner-friendly, Laravel or CodeIgniter?

Which is the better template engine, Laravel or CodeIgniter? Which is the better template engine, Laravel or CodeIgniter? Jun 03, 2024 am 11:30 AM

Which is the better template engine, Laravel or CodeIgniter?

See all articles