Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Connectez-vous avec Twitter dans Laravel en utilisant Laravel Socialite

46

Récemment, j’ai publié un article sur Login with Twitter in PHP. Un de nos lecteurs a demandé d’écrire un article sur la connexion avec Twitter dans Laravel. Bien que Laravel soit construit sur le langage de programmation PHP et que j’ai écrit sur la connexion Twitter en PHP, je sais que le didacticiel précédent ne convient pas au framework Laravel. Laravel a sa propre structure de dossiers, son flux de développement. Un développeur doit suivre les normes de Laravel lors de la création d’applications Web.

Laravel a ses packages officiels qui aident les développeurs à réaliser certaines fonctionnalités. L’un des packages est Socialite. En utilisant Socialite, vous pouvez intégrer la connexion sociale avec différents fournisseurs comme Facebook, Twitter, LinkedIn, Google, etc.

Dans cet article, nous étudions la connexion avec Twitter dans Laravel en utilisant Laravel Socialite.

Commencer

Commençons par la nouvelle installation de Laravel. Il n’est pas obligatoire d’utiliser une nouvelle installation Laravel, vous pouvez également utiliser votre projet existant.

Pour installer le dernier Laravel, exécutez la commande ci-dessous :

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

Lors de l’installation, créez la base de données et ajoutez les informations d’identification dans le .envfichier. Nous construisons un système de connexion, nous devons donc stocker les détails de l’utilisateur dans la base de données.

Ce didacticiel est basé sur Se connecter avec Twitter, nous obtiendrons donc l’identifiant Twitter de l’utilisateur après une authentification réussie. Pour stocker cet identifiant social, nous ajoutons des colonnes provideret provider_idà la table « utilisateurs ». La colonne providerstockera la valeur en tant que « twitter » et une colonne provider_idest pour l’identifiant Twitter de l’utilisateur.

Lorsque nous utilisons la connexion sociale, nous n’avons pas besoin de stocker les mots de passe, la colonne des mots de passe doit donc accepter la valeur « NULL » par défaut. Il n’y a aucune garantie d’obtenir l’e-mail de l’utilisateur après la connexion sociale, donc par curiosité, nous devons également définir des colonnes d’e-mail pour accepter la valeur ‘NULL’.

Ouvrez le fichier de migration de la table ‘users’ et ajoutez le code ci-dessous.

/**
 * 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();
    });
}

Après cela, exécutez la commande de migration qui créera des tables dans votre base de données.

php artisan migrate

Vous devez également ajouter les colonnes provideret provider_idau modèle User.

app/Utilisateur.php

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

Obtenez des informations d’identification Twitter

Comme nous allons intégrer la connexion Twitter dans Laravel, vous devez d’abord obtenir vos informations d’identification Twitter. Suivez les étapes ci-dessous pour créer une application Twitter et obtenir vos informations d’identification.

  • Connectez-vous au compte développeur Twitter et créez une nouvelle application.
  • Remplissez tous les champs obligatoires tels que le nom et la description de l’application.
  • Ajoutez le domaine de votre site Web dans le champ Site Web.
  • Définissez l’URL de rappel comme http://localhost:8000/twitter/callback. Ajustez l’URL selon vos besoins.
  • Une fois que vous vous êtes inscrit, copiez et collez les informations d’identification de l’application créées (Clé client et secret) qui nécessitent un certain temps.

En utilisant ces informations d’identification copiées, votre application Laravel terminera le flux OAuth lorsque les utilisateurs se connecteront avec leur compte Twitter.

Créer des routes et un contrôleur

Afin d’inclure la fonctionnalité de connexion avec Twitter, nous devons ajouter un code dans notre projet Laravel. Créons un LoginControllerà l’aide de la commande :

php artisan make:controller LoginController

Nous devons ajouter un lien de connexion dans le fichier blade. Créez un login.blade.phpet ajoutez-y le code HTML suivant.

<a href="{{ url('/login/twitter') }}" class="btn btn-success">
    {{ __('Login with Twitter') }}
</a>

Vous pouvez appeler cette vue à partir de la indexméthode de LoginController.

/**
 * Call the view
 */
public function index()
{
    return view('login');
}

Ensuite, ajoutez l’itinéraire correspondant. J’ajoute également quelques routes supplémentaires qui seront nécessaires pour la prochaine partie du didacticiel.

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

Une fois que l’utilisateur se sera connecté avec Twitter, je le redirigerai vers l’ homeitinéraire. C’est juste à des fins de démonstration. Vous devriez changer cet itinéraire en quelque chose d’autre.

Connectez-vous avec Twitter dans Laravel

Il est temps d’utiliser le package Socialite maintenant. En utilisant la commande ci-dessous, vous pouvez installer le package Socialite sur votre projet Laravel.

composer require laravel/socialite

Après avoir installé Socialite, nous devons le configurer. Ouvrez le config/services.phpet ajoutez la configuration Twitter à ce fichier comme suit :

'twitter' => [
    'client_id' => env('TWITTER_API_KEY'),
    'client_secret' => env('TWITTER_API_SECRET_KEY'),
    'redirect' => env('TWITTER_CALLBACK_URL'),
],

Vous remarquerez peut-être que j’ai utilisé la envméthode pour obtenir les valeurs spécifiées. Cela signifie que nous devons définir ces constantes dans le .envfichier.

TWITTER_API_KEY=PASTE_TWITTER_API_KEY
TWITTER_API_SECRET_KEY=PASTE_TWITTER_API_SECRET_KEY
TWITTER_CALLBACK_URL=http://localhost:8000/twitter/callback

Assurez-vous de remplacer les espaces réservés par vos clés API réelles. Ensuite, dans le LoginController, nous écrivons une fonction qui redirige un utilisateur vers la page de connexion Twitter, et en cas d’autorisation réussie, elle connectera l’utilisateur.

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

Rendez-vous sur la page de connexion et cliquez sur le lien « Se connecter avec Twitter ». Terminez le processus et vous devez vous connecter au système à l’aide de Twitter. Vous pouvez également trouver des entrées d’utilisateurs dans le userstableau.

J’espère que vous pourrez en apprendre davantage sur la connexion avec Twitter dans Laravel en utilisant le package Socialite. J’aimerais entendre vos pensées ou vos suggestions dans la section des commentaires ci-dessous.

Articles Liés

Source d’enregistrement: artisansweb.net

Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Plus de détails