...
✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Iniciar sesión con LinkedIn en Laravel usando Laravel Socialite

118

Agregar un sistema de inicio de sesión social en el sitio web es la tendencia hoy en día. Al integrar el inicio de sesión social, se omitirá el proceso de verificación de un usuario. Los sitios sociales ya tienen usuarios verificados, por lo que nuestra aplicación no necesita seguir el mismo proceso con un usuario. Podemos confiar en los sitios sociales y permitir que el usuario utilice nuestro sistema si inicia sesión a través de un sitio social en nuestro sitio web. Facebook, Twitter, Google, LinkedIn son los sitios sociales populares que normalmente se integran como un inicio de sesión social en el sitio web. En este artículo, cubriremos un inicio de sesión con LinkedIn en Laravel.

Para nuestro tutorial, integraré el inicio de sesión de LinkedIn en la nueva instalación de Laravel. Voy a instalar Laravel, crearé una tabla de ‘usuarios’ e instalaré los paquetes necesarios para integrar el sistema de inicio de sesión social.

Ejecute el siguiente comando para instalar Laravel. Aquí estoy creando un proyecto como ‘linkedinlogin’.

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

Después de la instalación, cree la base de datos y configure las credenciales en el .envarchivo. Estamos construyendo un sistema de inicio de sesión, por lo que deberíamos almacenar los detalles del usuario en la base de datos.

Este tutorial se basa en el inicio de sesión de LinkedIn, por lo que obtendremos el ID de perfil de LinkedIn del usuario después de una autenticación exitosa. Para almacenar esta identificación social, estamos agregando las columnas proveedor y provider_id. Aquí, la columna del proveedor almacenará el valor ‘linkedin’ y el provider_id almacenará la identificación social del usuario.

Cuando usamos el inicio de sesión social, no necesitamos almacenar contraseñas, por lo que el valor de la columna de contraseña debe aceptar ‘NULL’ como predeterminado. No hay garantía de recibir el correo electrónico del usuario después del inicio de sesión social, por lo que, por curiosidad, debemos configurar la columna de correo electrónico también para aceptar ‘NULL’.

Abra el archivo de migración de la tabla de usuarios y agregue el código a continuación.

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('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();
    });
}

Ejecute el siguiente comando que creará las tablas en nuestra base de datos.

php artisan migrate

También necesitamos agregar estas dos columnas en nuestro modelo de usuario.

aplicación / User.php

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

Crear aplicación de LinkedIn

Para integrar el inicio de sesión de LinkedIn, debe crear la aplicación en su cuenta de LinkedIn. Necesitamos identificación de cliente, secreto de cliente de la aplicación de LinkedIn. También necesitamos establecer una URL de redireccionamiento autorizada en la aplicación.

  • Vaya a la red de desarrolladores de LinkedIn.
  • Haga clic en el botón ‘Crear aplicación’.
  • Complete la información del formulario.
  • Agregue http://localhost:8000/linkedin/callbacken el campo URL de redireccionamiento autorizado.
  • Copie el ID de cliente y las claves secretas del cliente.

Iniciar sesión con LinkedIn en Laravel usando Laravel Socialite

Después de los pasos anteriores, debe agregar el producto ‘Iniciar sesión con LinkedIn’ a su aplicación de LinkedIn. Haga clic en la pestaña ‘productos’ y elija ‘Iniciar sesión con LinkedIn’. Al seleccionar este producto, se someterá a revisión y luego se incluirá como un producto agregado. Esto puede llevar algún tiempo para su revisión. En mi caso, tomó alrededor de 10 minutos.

Iniciar sesión con LinkedIn en Laravel usando Laravel Socialite

Crear rutas y controlador

Ahora podemos comenzar a agregar un código en Laravel. Crea un controlador LoginControllerusando el comando:

php artisan make:controller LoginController

A continuación, cree un archivo blade login.blade.phpy agréguele el siguiente HTML.

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

Llame a esta vista desde el indexmétodo de la LoginControllersiguiente manera.

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

Definamos las rutas para ello. También estoy agregando algunas rutas más que serán necesarias en la siguiente parte del tutorial.

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';
});

Cuando un usuario inicie sesión con LinkedIn, lo redireccionaré a la homeruta. Es solo para fines de demostración. Deberías cambiar esta ruta por otra.

Iniciar sesión con LinkedIn Laravel

Laravel tiene un paquete oficial Socialite. Este paquete nos ayuda a integrar fácilmente el sistema de inicio de sesión social en Laravel. Instale este paquete usando el comando:

composer require laravel/socialite

Después de instalar la biblioteca, abra config/services.phpy agregue la configuración de LinkedIn de la siguiente manera:

'linkedin' => [
    'client_id' => env('LINKEDIN_CLIENT_ID'),
    'client_secret' => env('LINKEDIN_CLIENT_SECRET'),
    'redirect' => env('LINKEDIN_CALLBACK_URL'),
],

Ahora, necesitamos agregar nuestros valores constantes en el .envarchivo.

LINKEDIN_CLIENT_ID=YOUR_CLIENT_ID
LINKEDIN_CLIENT_SECRET=YOUR_CLIENT_SECRET
LINKEDIN_CALLBACK_URL=http://localhost:8000/linkedin/callback

Asegúrese de reemplazar los marcadores de posición con sus valores reales. Los ajustes finales deben ir en el LoginController.phparchivo. En este archivo, estamos escribiendo una función que redirige a un usuario a la página de inicio de sesión de LinkedIn y, en caso de autorización exitosa, iniciará la sesión del usuario.

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 Linkedin authentication page.
     *
     * @return Response
     */
    public function redirectToProvider($provider)
    {
        return Socialite::driver($provider)->scopes(['r_liteprofile', 'r_emailaddress'])->redirect();
    }
   
    /**
     * Obtain the user information from Linkedin.
     *
     * @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
        ]);
    }
}

En nuestro LoginController, establecemos los alcances ['r_liteprofile', 'r_emailaddress']necesarios para obtener información básica de un usuario de LinkedIn. En el método de devolución de llamada, estamos verificando si el usuario existe y si no lo está, agregamos el usuario a la base de datos.

Espero que entiendas cómo iniciar sesión con LinkedIn en Laravel. Me gustaría escuchar sus pensamientos y sugerencias en la sección de comentarios a continuación.

Artículos relacionados

Fuente de grabación: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More