Connectez-vous avec Twitter dans Laravel en utilisant Laravel Socialite
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 .env
fichier. 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 provider
et provider_id
à la table « utilisateurs ». La colonne provider
stockera la valeur en tant que « twitter » et une colonne provider_id
est 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 provider
et provider_id
au 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.php
et 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 index
mé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’ home
itiné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.php
et 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 env
méthode pour obtenir les valeurs spécifiées. Cela signifie que nous devons définir ces constantes dans le .env
fichier.
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 users
tableau.
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
- Connectez-vous avec LinkedIn dans Laravel en utilisant Laravel Socialite
- Connexion Google dans Laravel en utilisant Laravel Socialite