Cách làm chức năng đăng nhập bằng tài khoản Google trong Laravel

Hướng dẫn chi tiết cách tích hợp tính năng đăng nhập bằng tài khoản Google trong Laravel sử dụng thư viện Laravel Socialite. Bài viết sẽ giúp bạn thiết lập ứng dụng Google API và cấu hình trong Laravel.

Trong bài viết này, chúng ta sẽ tìm hiểu cách tích hợp chức năng đăng nhập bằng tài khoản Google trong ứng dụng Laravel. Chúng ta sẽ sử dụng Laravel Socialite để thực hiện OAuth và lấy thông tin người dùng từ Google. Quá trình này bao gồm việc cài đặt Socialite, thiết lập Google API, và cấu hình các route và controller để xử lý quá trình xác thực.

Các bước thực hiện:

  1. Cài đặt Laravel Socialite Laravel Socialite là một package hỗ trợ đăng nhập qua các nhà cung cấp OAuth như Google, Facebook, GitHub, v.v.

    Sử dụng Composer để cài đặt Socialite:

    composer require laravel/socialite
    
  2. Cấu hình Google API Để sử dụng OAuth của Google, bạn cần tạo một dự án trên Google Developer Console. Các bước bao gồm:

    • Tạo một dự án mới
    • Thiết lập OAuth consent screen
    • Tạo thông tin OAuth credentials
    • Lấy Client IDClient Secret
  3. Cấu hình .env Sau khi có Client IDClient Secret từ Google Developer Console, thêm chúng vào tệp .env của dự án Laravel:

    GOOGLE_CLIENT_ID=your-google-client-id
    GOOGLE_CLIENT_SECRET=your-google-client-secret
    GOOGLE_REDIRECT_URL=http://your-domain.com/auth/google/callback
    
  4. Cấu hình services.php Tiếp theo, mở tệp config/services.php và thêm cấu hình Google:

    'google' => [
        'client_id' => env('GOOGLE_CLIENT_ID'),
        'client_secret' => env('GOOGLE_CLIENT_SECRET'),
        'redirect' => env('GOOGLE_REDIRECT_URL'),
    ],
    
  5. Tạo route Trong tệp routes/web.php, thêm route để người dùng có thể điều hướng đến Google để đăng nhập:

    use Laravel\Socialite\Facades\Socialite;
    
    Route::get('auth/google', function () {
        return Socialite::driver('google')->redirect();
    });
    
    Route::get('auth/google/callback', function () {
        $user = Socialite::driver('google')->user();
    
        // Xử lý đăng nhập hoặc tạo người dùng
        $existingUser = User::where('email', $user->getEmail())->first();
    
        if ($existingUser) {
            // Đăng nhập nếu người dùng đã tồn tại
            Auth::login($existingUser);
        } else {
            // Tạo người dùng mới
            $newUser = User::create([
                'name' => $user->getName(),
                'email' => $user->getEmail(),
                'google_id' => $user->getId(),
                // Có thể thêm các thông tin khác nếu cần
            ]);
    
            Auth::login($newUser);
        }
    
        return redirect('/home');
    });
    
  6. Thêm cột google_id vào bảng users Để lưu Google ID của người dùng, bạn cần thêm một cột google_id vào bảng users. Tạo một migration:

    php artisan make:migration add_google_id_to_users_table --table=users
    

    Sau đó, trong tệp migration, thêm đoạn mã:

    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->string('google_id')->nullable();
        });
    }
    
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('google_id');
        });
    }
    

    Chạy lệnh migration:

    php artisan migrate
    

Yêu cầu hệ thống:

  • Laravel phiên bản 8.x hoặc mới hơn
  • Composer để quản lý package
  • Tài khoản Google Developer Console để tạo OAuth credentials

Cách cài đặt các thư viện:

  • Cài đặt Laravel Socialite: composer require laravel/socialite
  • Thiết lập tài khoản Google API từ Google Developer Console

Lời khuyên:

  • Khi triển khai trên môi trường thực tế, hãy đảm bảo GOOGLE_REDIRECT_URL trỏ tới một miền hợp lệ (sử dụng HTTPS).
  • Sử dụng thư viện như Laravel Debugbar để dễ dàng debug các lỗi trong quá trình phát triển.


Các Hướng Dẫn Cùng Chủ Đề Đang Xem

Cách chuyển đổi chuỗi Markdown sang HTML bằng Laravel

Hướng dẫn cách chuyển đổi chuỗi Markdown sang HTML trong Laravel bằng cách sử dụng thư viện `league/commonmark`, giúp quá trình chuyển đổi trở nên dễ dàng và hiệu quả.
Tạo mã Captcha trong Laravel

Hướng dẫn chi tiết cách tạo mã Captcha trong Laravel để bảo vệ form khỏi spam và xác thực người dùng. Bài viết sẽ giúp bạn tích hợp Captcha vào dự án Laravel một cách dễ dàng.
Các cách SELECT dữ liệu từ database MySQL trong Laravel

Khám phá các phương pháp khác nhau để select dữ liệu từ database MySQL trong Laravel, bao gồm sử dụng Eloquent ORM và Query Builder.
Cách truyền Authentication Header Token khi POST dữ liệu tới API trong Laravel

Hướng dẫn cách truyền Authentication Header Token khi POST dữ liệu tới API trong Laravel. Bài viết sẽ trình bày chi tiết cách sử dụng `HTTP Client` của Laravel để gửi Token cùng với dữ liệu tới API.
Đọc nội dung Excel bằng Laravel

Hướng dẫn chi tiết cách đọc nội dung file Excel trong Laravel bằng gói Laravel Excel. Bài viết cung cấp đoạn mã mẫu, giải thích chi tiết từng bước và hướng dẫn cài đặt gói cần thiết.
Xác thực bằng JSON Web Token (JWT) trong Laravel

Hướng dẫn từng bước triển khai xác thực API bằng JSON Web Token (JWT) trong Laravel. Bài viết sẽ bao gồm các bước cài đặt và cấu hình để bảo mật ứng dụng web thông qua token-based authentication.
Hướng dẫn làm đăng nhập bằng Facebook trong Laravel

Hướng dẫn từng bước cách tích hợp chức năng đăng nhập bằng tài khoản Facebook vào ứng dụng Laravel, sử dụng thư viện Socialite. Bài viết bao gồm cách cấu hình Facebook OAuth và cách xử lý đăng nhập trong Laravel.
Các cách DELETE dữ liệu từ database MySQL trong Laravel

Hướng dẫn chi tiết về các phương pháp khác nhau để xóa dữ liệu từ database MySQL trong Laravel, bao gồm Eloquent, Query Builder, và cách thực hiện soft delete.
Liệt kê các cách sử dụng hàm where lồng nhau trong Laravel

Bài viết tổng hợp các cách sử dụng hàm `where` lồng nhau trong Laravel, giúp người đọc hiểu rõ cách xây dựng các truy vấn phức tạp trong ứng dụng.
Hướng dẫn force HTTPS trong Laravel

Hướng dẫn chi tiết cách thiết lập force HTTPS trong Laravel để đảm bảo rằng tất cả các yêu cầu tới ứng dụng đều được chuyển hướng sang HTTPS, giúp tăng cường bảo mật cho trang web của bạn.

Đã thêm vào giỏ hàng