...
✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Google’i sisselogimine Laravelis, kasutades teenust Laravel Socialite

28

Hiljuti avaldasin artikli Logi sisse LinkedIniga, kasutades Laraveli suhtlusvõrgustikku, ja üks meie lugejatest küsis Google Logi sisse Laraveli integreerimise kohta. Google’i sisselogimine on ka üks populaarsemaid platvorme, mida veebisaidil sotsiaalse sisselogimise jaoks kasutatakse.

Kui lubate kasutajatel oma veebisaidil oma sotsiaalse profiiliga sisse logida, jätate nende e-posti aadressi kinnitamise protsessi vahele. Teie kasutajad ei pea e-posti aktiveerimisprotsessi jälgima. Võime tugineda sotsiaalsetele saitidele, kuna nad on juba oma platvormil kasutajaid kinnitanud. See annab teie kasutajatele parema kasutuskogemuse, kuna neil pole vaja meeles pidada oma veebisaidi sisselogimisandmeid ja säästab teid ka kontrollivoo jaoks koodide lisamisest. See on olukord, kus võidavad kõik.

Selles artiklis uurime samm-sammult juhendit Google’i sisselogimise lisamiseks Laravelisse Laraveli suhtlusportaali abil. Laraveli seltskonnategelane tegeleb OAuthi vooga sotsiaalse sisselogimise jaoks kulisside taga. See pakett kiirendab sotsiaalse sisselogimise integreerimist Laraveli.

Selle õpetuse jaoks kasutan värsket Laraveli installi, nii et käivitage järgmine käsk, mis installib teie jaoks Laraveli:

composer create-project --prefer-dist laravel/laravel googlelogin

Laraveli installimisel looge andmebaas ja lisage .envfaili oma andmebaasi mandaadid. Kuna lisame rakendusse sotsiaalse sisselogimise, lisan kasutaja migreerimisfailile veel 2 veergu ja muutsin selle koodi veidi.

Avage oma kasutaja migratsioonifail ja lisage upmeetodile allolev kood .

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('email')->nullable();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password')->nullable();
        $table->string('provider');
        $table->string('provider_id');
        $table->rememberToken();
        $table->timestamps();
    });
}

Ülalolevas koodis olen lisanud 2 veergu providerja provider_idmis hoiavad vastavalt väärtusi ‘google’ ja kasutaja Google’i profiili id. Looge kasutajate tabel, käivitades käsu migreerimine.

php artisan migrate

Need 2 veergu peate lisama ka kasutajamudelisse.

app / User.php

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password', 'provider', 'provider_id',
];

Looge Google’i rakendus ja hankige oma volitused

Järgmisena peame looma projekti Google API-de konsoolil. Kasutajate jaoks OAuthi protsessi lõpuleviimiseks vajame rakenduse kliendi ID-d ja kliendisaladust.

Google’i projekti loomiseks ja volituste saamiseks järgige alltoodud samme. Õpetuse huvides kasutan kohaliku serveri URL-i. Saate seda URL-i oma nõuete järgi kohandada.

  • Minge Google’i arendajakonsoolile.
  • Klõpsake rippmenüül ja looge uus projekt, klõpsates nuppu (+). Teise võimalusena saate valida ka olemasoleva projekti.
  • Valige projekti juhtpaneelil külgribalt Mandaadid.
  • Klõpsake vahekaardi Mandaadid rippmenüül Loo mandaadid ja valige OAuthi kliendi ID.
  • Valige rakenduse tüübist veebirakendus. Sisestage URL-i volitatud ümbersuunamise URL-id http://localhost:8000/google/callback.

Kui olete selle salvestanud, saate hüpikakna koos oma kliendi ID ja kliendisaladusega. Kopeerige need võtmed, mida vajame mõne hetkega.

Loo marsruudid ja kontroller

Olete oma API-võtmetega valmis. Nüüd tuleb edasi liikumiseks luua marsruudid, labafail ja kontroller. Looge LoginControllerkäsu abil:

php artisan make:controller LoginController

Pärast seda looge nimega labafail login.blade.phpja lisage sellele allpool olev HTML.

<a href="{{ url('/login/google') }}">
    {{ __('Login with Google') }}
</a>

Kutsuge seda vaadet indexmeetodilt LoginController.

public function index()
{
    return view('login');
}

Selle vaate helistamiseks peate lisama selle marsruudi. Lisame veel mõned marsruudid, mis vajavad juhendaja järgmist osa.

Route::get('login', 'LoginController@index');
Route::get('login/{provider}', 'LoginController@redirectToProvider');
Route::get('{provider}/callback', 'LoginController@handleProviderCallback');
Route::get('/home', function() {
    return 'User is logged in';
});

Pange tähele, et lisasin homemarsruudi. Kui kasutaja Google’iga sisse logib, suunan nad homemarsruudile. Hoian seda lihtsalt demo eesmärgil. Peaksite selle marsruudi millekski muuks muutma.

Google’i sisselogimine Laravelis, kasutades teenust Laravel Socialite

Siiani oleme sotsiaalse sisselogimise jaoks vajaliku põhiseadistusega valmis. Nüüd. on aeg installida Laraveli Socialite’i raamatukogu. Installige see, käivitades terminalis alloleva käsu.

composer require laravel/socialite

Teegi installimisel avage config/services.phpja lisage Google’i konfiguratsioon järgmiselt:

'google' => [
    'client_id'     => env('GOOGLE_CLIENT_ID'),
    'client_secret' => env('GOOGLE_CLIENT_SECRET'),
    'redirect'      => env('GOOGLE_REDIRECT_URL'),
],

Kuna me kasutasime envvolituste saamiseks meetodit, peame need volitused .envfaili lisama .

GOOGLE_CLIENT_ID=YOUR_CLIENT_ID
GOOGLE_CLIENT_SECRET=YOUR_CLIENT_SECRET
GOOGLE_REDIRECT_URL=http://localhost:8000/google/callback

Asendage kohatäited tegelike väärtustega. Lõpuks peame lisama LoginController.phpfaili koodi, mis suunab kasutaja Google’i sisselogimislehele ja vastutasuks haldab vastust. Selles failis kirjutame funktsiooni, mis suunab kasutaja Google’i sisselogimislehele ja edukal autoriseerimisel sisestab see kasutajaandmed andmebaasi ja logib kasutaja sisse.

LoginController.php

<?php
  
namespace AppHttpControllers;
  
use IlluminateHttpRequest;
use Socialite;
use AppModelsUser;
use Auth;
  
class LoginController extends Controller
{
    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';
  
    /**
     * Call the view
     */
    public function index()
    {
        return view('login');
    }
  
    /**
     * Redirect the user to the Google authentication page.
     *
     * @return Response
     */
    public function redirectToProvider($provider)
    {
        return Socialite::driver($provider)->redirect();
    }
    
    /**
     * Obtain the user information from Google.
     *
     * @return Response
     */
    public function handleProviderCallback($provider)
    {
        $user = Socialite::driver($provider)->user();
        $authUser = $this->findOrCreateUser($user, $provider);
        Auth::login($authUser, true);
        return redirect($this->redirectTo);
    }
    
    /**
     * If a user has registered before using social auth, return the user
     * else, create a new user object.
     * @param  $user Socialite user object
     * @param $provider Social auth provider
     * @return  User
     */
    public function findOrCreateUser($user, $provider)
    {
        $authUser = User::where('provider_id', $user->id)->first();
        if ($authUser) {
            return $authUser;
        }
        return User::create([
            'name'     => $user->name,
            'email'    => $user->email,
            'provider' => $provider,
            'provider_id' => $user->id
        ]);
    }
}

Kontrollerifailis kontrollime, kas kasutaja provider_idon juba olemas või mitte. Kui see on olemas, tagastage praegune kasutajaeksemplar, muidu sisestage see kasutajate tabelisse ja logige kasutaja sisse.

Loodan, et saite Socialite paketi abil teada Laraveli Google’i sisselogimisest. Tahaksin kuulda teie mõtteid ja ettepanekuid allpool olevas kommentaaride jaotises.

seotud artiklid

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem