Rumah rangka kerja php Laravel Pembangunan Laravel: Bagaimana dengan cepat mengintegrasikan log masuk pihak ketiga menggunakan Laravel Socialite?

Pembangunan Laravel: Bagaimana dengan cepat mengintegrasikan log masuk pihak ketiga menggunakan Laravel Socialite?

Jun 13, 2023 pm 10:09 PM
laravel Log masuk pihak ketiga socialite

Laravel ialah rangka kerja PHP popular yang digunakan untuk membangunkan aplikasi web. Salah satu ciri yang paling biasa ialah penyepaduan log masuk pihak ketiga ke dalam aplikasi. Melakukannya boleh memberikan pengguna pengalaman pengguna yang lebih baik dan mengurangkan proses pendaftaran berulang.

Dalam artikel ini, kita akan membincangkan cara mengintegrasikan log masuk pihak ketiga menggunakan perpustakaan Laravel Socialite.

Apakah itu Laravel Socialite?

Laravel Socialite ialah pakej sambungan untuk rangka kerja Laravel yang membolehkan pembangun melaksanakan log masuk pihak ketiga dengan mudah dalam aplikasi mereka. Ia menyokong pelbagai platform sosial seperti Facebook, Twitter, LinkedIn, dll.

Bagaimana Socialite berfungsi?

Socialite mengikut protokol OAuth. OAuth ialah rangka kerja kebenaran yang membenarkan pengguna menghantar maklumat akaun mereka dari satu tapak ke tapak lain tanpa berkongsi bukti kelayakan mereka. OAuth memerlukan kebenaran pengguna, dalam hal ini pengguna membenarkan aplikasi untuk mengakses akaun media sosial mereka.

Keizinan Socialite berfungsi seperti berikut:

  1. Pengguna mengklik butang "Log Masuk", yang akan menunjuk ke kebenaran Socialite:

    Route::get('auth/{provider}', 'AuthSocialController@redirectToProvider');
    Salin selepas log masuk
  2. Socialite mencabar pengguna untuk membenarkan akses ke akaun media sosial mereka; mengubah hala ke URL panggil balik;

    Route::get('auth/{provider}/callback', 'AuthSocialController@handleProviderCallback');
    Salin selepas log masuk

Socialite akan mengembalikan URL panggilan balik dengan kod kebenaran kepada aplikasi dan aplikasi akan meminta token akses OAuth dengan kod kebenaran;

public function redirectToProvider($provider)
{
  return Socialite::driver($provider)->redirect();
}
Salin selepas log masuk

    Setelah selesai pengesahan, Socialite akan mengembalikan token yang dibenarkan pengguna dan menyerahkannya kepada aplikasi.
  1. Bagaimana untuk menggunakan Socialite dalam Laravel?
  2. Menggunakan mana-mana platform media sosial yang disokong oleh Socialite, anda perlu menyediakan bukti kelayakan aplikasi atau kunci di dua tempat:
  3. public function handleProviderCallback($provider)
    {
    $socialUser = Socialite::driver($provider)->user();
    }
    Salin selepas log masuk
Bukti kelayakan atau kunci aplikasi bertujuan untuk mengesahkan identiti aplikasi .

Kami akan menyediakannya dalam fail config/services.php.

Langkah 1: Buat Laluan Kebenaran

Buat laluan yang mencetuskan kebenaran Socialite:

    'facebook' => [
        'client_id' => env('FB_CLIENT_ID'),
        'client_secret' => env('FB_CLIENT_SECRET'),
        'redirect' => env('FB_CALLBACK_URL'),
    ]

    'twitter' => [
        'client_id' => env('TW_CLIENT_ID'),
        'client_secret' => env('TW_CLIENT_SECRET'),
        'redirect' => env('TW_CALLBACK_URL'),
    ],

    'google' => [
         'client_id' => env('GOOGLE_CLIENT_ID'),
         'client_secret' => env('GOOGLE_CLIENT_SECRET'),
         'redirect' => env('GOOGLE_CALLBACK_URL')
    ]
Salin selepas log masuk

Biasanya laluan ini diletakkan dalam pengawal yang dipanggil SocialController, yang Pengawal digunakan untuk mengendalikan Keizinan sosialit dan panggilan balik.

Langkah 2: Buat SocialController

Seperti semua pengawal, kita perlu mencipta SocialController yang menggunakan amalan pengekodan yang baik.

Gunakan arahan berikut untuk mencipta pengawal:

Route::get('auth/{provider}', 'AuthSocialController@redirectToProvider');
Route::get('auth/{provider}/callback', 'AuthSocialController@handleProviderCallback');
Salin selepas log masuk

Akhirnya ini akan membolehkan kami menggunakan pembekal kebenaran untuk kebenaran dan panggilan balik ke laluan kami.

Dalam SocialController, kami mentakrifkan dua kaedah, redirectToProvider dan handleProviderCallback. Yang pertama ialah ubah hala kepada pembekal kebenaran. Fungsi panggil balik seterusnya kemudiannya menyediakan URL panggil balik untuk klien dengan kod kebenaran untuk mendapatkan semula maklumat dan melengkapkan pengesahan.

Berikut ialah contoh kod untuk SocialController:

php artisan make:controller AuthSocialController
Salin selepas log masuk

Langkah 3: Menggunakan Pengawal Paparan

Biasanya, kami akan menggunakan pengawal paparan untuk mengurus pemaparan semua paparan kami. Ini menjadikan kod kami lebih mudah dibaca dan diurus. Mari buat paparan ringkas untuk aplikasi kami menggunakan pengawal paparan Laravel.

Gunakan arahan berikut untuk mencipta pengawal paparan:

namespace AppHttpControllersAuth;
use AppHttpControllersController;
use IlluminateSupportFacadesAuth;
use IlluminateHttpRequest;
use LaravelSocialiteFacadesSocialite;

class SocialController extends Controller
{
    /**
     * Redirect the user to the OAuth Provider.
     *
     * @return IlluminateHttpResponse
     */
    public function redirectToProvider($provider)
    {
        return Socialite::driver($provider)->redirect();
    }
    /**
     * Obtain the user information from OAuth Provider.
     *
     * @return IlluminateHttpResponse
     */
    public function handleProviderCallback($provider)
    {
        $user = Socialite::driver($provider)->user();

        // Do something with user data, for example:
        // $user->token;
        // $user->getId();
        // $user->getEmail();
    }
}
Salin selepas log masuk

Berikut ialah perubahan yang dibuat dalam pengawal.

php artisan make:controller SocialAuthController
Salin selepas log masuk

Langkah 4: Cipta paparan log masuk

Sekarang pengawal dan laluan kami sudah sedia. Sekarang kita perlu mencipta paparan untuk log masuk.

Buat fail paparan dan namakannya social_login.blade.php. Kami perlu memaparkan butang yang boleh mencetuskan log masuk pihak ketiga. Dalam kes ini kami akan menunjukkan 3 butang untuk menyokong log masuk dengan Google, Facebook dan Twitter.

Berikut ialah contoh kod untuk fail paparan:

namespace AppHttpControllers;

use IlluminateHttpRequest;

class SocialAuthController extends Controller
{
    /**
     * Redirect the user to the OAuth Provider.
     *
     * @return IlluminateHttpResponse
     */
    public function redirectToProvider($provider)
    {
        return Socialite::driver($provider)->redirect();
    }

    /**
     * Obtain the user information from OAuth Provider.
     *
     * @return IlluminateHttpResponse
     */
    public function handleProviderCallback($provider)
    {
        $user = Socialite::driver($provider)->user();
        $existingUser = User::where('email', $user->getEmail())->first();
        if ($existingUser) { // If user already exists, login the user                
            auth()->login($existingUser, true);
        } else { // Register new user                    
            $newUser = new User();
            $newUser->name = $user->getName();
            $newUser->email = $user->getEmail();
            $newUser->google_id = $user->getId();
            $newUser->password = encrypt('amitthakur');
            $newUser->save();
            auth()->login($newUser, true);
        }
        return redirect()->to('/home');
    }
}
Salin selepas log masuk

Gunakan fail reka letak di bahagian atas. Apabila pengguna mengklik pada mana-mana butang, kami mengubah hala mereka kepada pembekal kebenaran. Dalam tindak balas SocialController kami akan mendapat data pengguna dan pengesahan lengkap.

Langkah 5: Buat laluan baharu

Sekarang kita perlu mencipta laluan baharu untuk mengendalikan fail paparan di atas.

Ubah suai fail web.php seperti berikut:

@extends('layouts.app')
@section('content')
<main class="py-4">
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header">{{ __('Login') }}</div>
                    <div class="card-body">
                        <a href="{{ route('social.oauth', ['provider' => 'google']) }}" class="btn btn-google">Sign in with google</a>
                        <a href="{{ route('social.oauth', ['provider' => 'facebook']) }}" class="btn btn-facebook">Sign in with Facebook</a>
                        <a href="{{ route('social.oauth', ['provider' => 'twitter']) }}" class="btn btn-twitter">Sign in with twitter</a>
                    </div>
                </div>
            </div>
        </div>
    </div>
</main>
@endsection
Salin selepas log masuk

Kita harus ambil perhatian bahawa laluan di atas dikenal pasti mengikut nama supaya ia boleh dirujuk dalam kod pengawal.

Langkah 6: Uji

Sekarang kami telah menyediakan identiti media sosial kami, sebelum kami boleh menguji aplikasi, kami perlu mengkonfigurasi aplikasi kami melalui fail .env.

Untuk mengkonfigurasi fail .env, tambah kod berikut:

Route::get('social', 'SocialAuthController@index')->name('social.login');
Route::get('social/{provider}', 'SocialAuthController@redirectToProvider')->name('social.oauth');
Route::get('social/{provider}/callback', 'SocialAuthController@handleProviderCallback');
Salin selepas log masuk
Ganti ID aplikasi sebenar dengan "xxxxxxxxxxxxxxxxx" pada baris ini. Selepas itu, kami boleh melancarkan aplikasi kami melalui baris arahan dan mengakses fail paparan di atas. Sebaik sahaja kami mengklik mana-mana butang dan membenarkan akaun kami melalui OAuth, kami disahkan dengan setiap pengguna yang dikenali.

Kesimpulan

Dalam artikel ini, kami mempelajari cara mengintegrasikan log masuk pihak ketiga menggunakan pustaka Laravel Socialite. Tujuan utama Socialite adalah untuk memudahkan proses log masuk media sosial untuk meningkatkan pengalaman pengguna. Kami belajar cara menyediakan Socialite untuk menyokong Google, Facebook dan Twitter. Kami juga mendapatkan semula kod kebenaran dalam pengawal dan melengkapkan pengesahan OAuth menggunakan data yang diminta. Proses ini sebenarnya akan membuat akaun baharu atau mengemas kini akaun sedia ada.

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana dengan cepat mengintegrasikan log masuk pihak ketiga menggunakan Laravel Socialite?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Perbandingan versi terkini Laravel dan CodeIgniter Perbandingan versi terkini Laravel dan CodeIgniter Jun 05, 2024 pm 05:29 PM

Versi terkini Laravel 9 dan CodeIgniter 4 menyediakan ciri dan penambahbaikan yang dikemas kini. Laravel9 menggunakan seni bina MVC dan menyediakan fungsi seperti migrasi pangkalan data, pengesahan dan enjin templat. CodeIgniter4 menggunakan seni bina HMVC untuk menyediakan penghalaan, ORM dan caching. Dari segi prestasi, corak reka bentuk berasaskan pembekal perkhidmatan Laravel9 dan rangka kerja ringan CodeIgniter4 memberikannya prestasi cemerlang. Dalam aplikasi praktikal, Laravel9 sesuai untuk projek kompleks yang memerlukan fleksibiliti dan fungsi berkuasa, manakala CodeIgniter4 sesuai untuk pembangunan pesat dan aplikasi kecil.

Mana satu yang lebih mesra pemula, Laravel atau CodeIgniter? Mana satu yang lebih mesra pemula, Laravel atau CodeIgniter? Jun 05, 2024 pm 07:50 PM

Untuk pemula, CodeIgniter mempunyai keluk pembelajaran yang lebih lembut dan ciri yang lebih sedikit, tetapi meliputi keperluan asas. Laravel menawarkan set ciri yang lebih luas tetapi mempunyai keluk pembelajaran yang lebih curam. Dari segi prestasi, kedua-dua Laravel dan CodeIgniter berprestasi baik. Laravel mempunyai dokumentasi yang lebih luas dan sokongan komuniti yang aktif, manakala CodeIgniter lebih ringkas, ringan dan mempunyai ciri keselamatan yang kukuh. Dalam kes praktikal membina aplikasi blog, EloquentORM Laravel memudahkan manipulasi data, manakala CodeIgniter memerlukan lebih banyak konfigurasi manual.

Laravel vs CodeIgniter: Rangka kerja manakah yang lebih baik untuk projek besar? Laravel vs CodeIgniter: Rangka kerja manakah yang lebih baik untuk projek besar? Jun 04, 2024 am 09:09 AM

Apabila memilih rangka kerja untuk projek besar, Laravel dan CodeIgniter masing-masing mempunyai kelebihan mereka sendiri. Laravel direka untuk aplikasi peringkat perusahaan, menawarkan reka bentuk modular, suntikan pergantungan dan set ciri yang berkuasa. CodeIgniter ialah rangka kerja ringan yang lebih sesuai untuk projek kecil hingga sederhana, menekankan kelajuan dan kemudahan penggunaan. Untuk projek besar dengan keperluan yang kompleks dan bilangan pengguna yang ramai, kuasa dan kebolehskalaan Laravel adalah lebih sesuai. Untuk projek atau situasi mudah dengan sumber terhad, keupayaan pembangunan CodeIgniter yang ringan dan pantas adalah lebih ideal.

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

Laravel - Perintah Artisan - Laravel 5.7 hadir dengan cara baharu untuk merawat dan menguji arahan baharu. Ia termasuk ciri baharu untuk menguji arahan artisan dan demonstrasi disebut di bawah?

Laravel vs CodeIgniter: Rangka kerja manakah yang lebih baik untuk projek kecil? Laravel vs CodeIgniter: Rangka kerja manakah yang lebih baik untuk projek kecil? Jun 04, 2024 pm 05:29 PM

Untuk projek kecil, Laravel sesuai untuk projek yang lebih besar yang memerlukan fungsi dan keselamatan yang kukuh. CodeIgniter sesuai untuk projek yang sangat kecil yang memerlukan ringan dan mudah digunakan.

Manakah enjin templat yang lebih baik, Laravel atau CodeIgniter? Manakah enjin templat yang lebih baik, Laravel atau CodeIgniter? Jun 03, 2024 am 11:30 AM

Membandingkan enjin templat Laravel's Blade dan CodeIgniter's Twig, pilih berdasarkan keperluan projek dan keutamaan peribadi: Blade adalah berdasarkan sintaks MVC, yang menggalakkan organisasi kod dan warisan templat yang baik. Twig ialah perpustakaan pihak ketiga yang menyediakan sintaks fleksibel, penapis berkuasa, sokongan lanjutan dan kotak pasir keselamatan.

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

Laravel - Artisan Console - Rangka kerja Laravel menyediakan tiga alat utama untuk interaksi melalui baris arahan iaitu: Artisan, Ticker dan REPL. Bab ini menerangkan tentang Artisan secara terperinci.

Laravel - Penyesuaian Penomboran Laravel - Penyesuaian Penomboran Aug 27, 2024 am 10:51 AM

Laravel - Penyesuaian Penomboran - Laravel termasuk ciri penomboran yang membantu pengguna atau pembangun menyertakan ciri penomboran. Paginator Laravel disepadukan dengan pembina pertanyaan dan ORM Fasih. Kaedah penomboran automatik

See all articles