{"id":25747,"date":"2021-06-12T19:03:00","date_gmt":"2021-06-12T16:03:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25747"},"modified":"2021-10-18T02:04:57","modified_gmt":"2021-10-17T23:04:57","slug":"connectez-vous-avec-twitter-dans-laravel-en-utilisant-laravel-socialite","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/connectez-vous-avec-twitter-dans-laravel-en-utilisant-laravel-socialite\/","title":{"rendered":"Connectez-vous avec Twitter dans Laravel en utilisant Laravel Socialite"},"content":{"rendered":"<p>R\u00e9cemment, j&rsquo;ai publi\u00e9 un article sur <a href=\"https:\/\/themewp.inform.click\/fr\/comment-ajouter-une-connexion-twitter-oauth-sur-un-site-web-avec-php\/\" title=\"Login with Twitter in PHP\" >Login with Twitter in PHP<\/a>. Un de nos lecteurs a demand\u00e9 d&rsquo;\u00e9crire un article sur la connexion avec Twitter dans Laravel. Bien que Laravel soit construit sur le langage de programmation PHP et que j&rsquo;ai \u00e9crit sur la connexion Twitter en PHP, je sais que le didacticiel pr\u00e9c\u00e9dent ne convient pas au framework Laravel. Laravel a sa propre structure de dossiers, son flux de d\u00e9veloppement. Un d\u00e9veloppeur doit suivre les normes de Laravel lors de la cr\u00e9ation d&rsquo;applications Web.<\/p>\n<p>Laravel a ses packages officiels qui aident les d\u00e9veloppeurs \u00e0 r\u00e9aliser certaines fonctionnalit\u00e9s. L&rsquo;un des packages est <a href=\"https:\/\/laravel.com\/docs\/master\/socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Socialite<\/a>. En utilisant Socialite, vous pouvez int\u00e9grer la connexion sociale avec diff\u00e9rents fournisseurs comme Facebook, Twitter, LinkedIn, Google, etc.<\/p>\n<p>Dans cet article, nous \u00e9tudions la <strong>connexion avec Twitter dans Laravel en<\/strong> utilisant Laravel Socialite.<\/p>\n<h3>Commencer<\/h3>\n<p>Commen\u00e7ons par la nouvelle installation de Laravel. Il n&rsquo;est pas obligatoire d&rsquo;utiliser une nouvelle installation Laravel, vous pouvez \u00e9galement utiliser votre projet existant.<\/p>\n<p>Pour installer le dernier Laravel, ex\u00e9cutez la commande ci-dessous\u00a0:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel twitterlogin<\/code><\/pre>\n<p>Lors de l&rsquo;installation, cr\u00e9ez la base de donn\u00e9es et ajoutez les informations d&rsquo;identification dans le <code>.env<\/code>fichier. Nous construisons un syst\u00e8me de connexion, nous devons donc stocker les d\u00e9tails de l&rsquo;utilisateur dans la base de donn\u00e9es.<\/p>\n<p>Ce didacticiel est bas\u00e9 sur Se connecter avec Twitter, nous obtiendrons donc l&rsquo;identifiant Twitter de l&rsquo;utilisateur apr\u00e8s une authentification r\u00e9ussie. Pour stocker cet identifiant social, nous ajoutons des colonnes <code>provider<\/code>et <code>provider_id<\/code>\u00e0 la table \u00ab\u00a0utilisateurs\u00a0\u00bb. La colonne <code>provider<\/code>stockera la valeur en tant que \u00ab\u00a0twitter\u00a0\u00bb et une colonne <code>provider_id<\/code>est pour l&rsquo;identifiant Twitter de l&rsquo;utilisateur.<\/p>\n<p>Lorsque nous utilisons la connexion sociale, nous n&rsquo;avons pas besoin de stocker les mots de passe, la colonne des mots de passe doit donc accepter la valeur \u00ab\u00a0NULL\u00a0\u00bb par d\u00e9faut. Il n&rsquo;y a aucune garantie d&rsquo;obtenir l&rsquo;e-mail de l&rsquo;utilisateur apr\u00e8s la connexion sociale, donc par curiosit\u00e9, nous devons \u00e9galement d\u00e9finir des colonnes d&rsquo;e-mail pour accepter la valeur &lsquo;NULL&rsquo;.<\/p>\n<p>Ouvrez le fichier de migration de la table &lsquo;users&rsquo; et ajoutez le code ci-dessous.<\/p>\n<pre><code>\/**\n\u00a0* Run the migrations.\n\u00a0*\n\u00a0* @return void\n\u00a0*\/\npublic function up()\n{\n\u00a0\u00a0\u00a0\u00a0Schema::create('users', function (Blueprint $table) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;increments('id');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('name');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('email')-&gt;nullable();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;timestamp('email_verified_at')-&gt;nullable();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('password')-&gt;nullable();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('provider');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('provider_id');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;rememberToken();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;timestamps();\n\u00a0\u00a0\u00a0\u00a0});\n}<\/code><\/pre>\n<p>Apr\u00e8s cela, ex\u00e9cutez la commande de migration qui cr\u00e9era des tables dans votre base de donn\u00e9es.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Vous devez \u00e9galement ajouter les colonnes <code>provider<\/code>et <code>provider_id<\/code>au mod\u00e8le User.<\/p>\n<p><strong>app\/Utilisateur.php<\/strong><\/p>\n<pre><code>\/**\n\u00a0* The attributes that are mass assignable.\n\u00a0*\n\u00a0* @var array\n\u00a0*\/\nprotected $fillable = [\n\u00a0\u00a0\u00a0\u00a0'name', 'email', 'password', 'provider', 'provider_id'\n];<\/code><\/pre>\n<h3>Obtenez des informations d&rsquo;identification Twitter<\/h3>\n<p>Comme nous allons int\u00e9grer la connexion Twitter dans Laravel, vous devez d&rsquo;abord obtenir vos informations d&rsquo;identification Twitter. Suivez les \u00e9tapes ci-dessous pour cr\u00e9er une application Twitter et obtenir vos informations d&rsquo;identification.<\/p>\n<ul>\n<li>Connectez-vous au <a href=\"https:\/\/dev.twitter.com\/apps\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">compte d\u00e9veloppeur Twitter<\/a> et cr\u00e9ez une nouvelle application.<\/li>\n<li>Remplissez tous les champs obligatoires tels que le nom et la description de l&rsquo;application.<\/li>\n<li>Ajoutez le domaine de votre site Web dans le champ Site Web.<\/li>\n<li>D\u00e9finissez l&rsquo;URL de rappel comme <code>http:\/\/localhost:8000\/twitter\/callback<\/code>. Ajustez l&rsquo;URL selon vos besoins.<\/li>\n<li>Une fois que vous vous \u00eates inscrit, copiez et collez les informations d&rsquo;identification de l&rsquo;application cr\u00e9\u00e9es (Cl\u00e9 client et secret) qui n\u00e9cessitent un certain temps.<\/li>\n<\/ul>\n<p>En utilisant ces informations d&rsquo;identification copi\u00e9es, votre application Laravel terminera le flux OAuth lorsque les utilisateurs se connecteront avec leur compte Twitter.<\/p>\n<h3>Cr\u00e9er des routes et un contr\u00f4leur<\/h3>\n<p>Afin d&rsquo;inclure la fonctionnalit\u00e9 de connexion avec Twitter, nous devons ajouter un code dans notre projet Laravel. Cr\u00e9ons un <code>LoginController<\/code>\u00e0 l&rsquo;aide de la commande\u00a0:<\/p>\n<pre><code>php artisan make:controller LoginController<\/code><\/pre>\n<p>Nous devons ajouter un lien de connexion dans le fichier blade. Cr\u00e9ez un <code>login.blade.php<\/code>et ajoutez-y le code HTML suivant.<\/p>\n<pre><code>&lt;a href=\"{{ url('\/login\/twitter') }}\" class=\"btn btn-success\"&gt;\n\u00a0\u00a0\u00a0\u00a0{{ __('Login with Twitter') }}\n&lt;\/a&gt;<\/code><\/pre>\n<p>Vous pouvez appeler cette vue \u00e0 partir de la <code>index<\/code>m\u00e9thode de <code>LoginController<\/code>.<\/p>\n<pre><code>\/**\n\u00a0* Call the view\n\u00a0*\/\npublic function index()\n{\n\u00a0\u00a0\u00a0\u00a0return view('login');\n}<\/code><\/pre>\n<p>Ensuite, ajoutez l&rsquo;itin\u00e9raire correspondant. J&rsquo;ajoute \u00e9galement quelques routes suppl\u00e9mentaires qui seront n\u00e9cessaires pour la prochaine partie du didacticiel.<\/p>\n<pre><code>Route::get('login', 'LoginController@index');\nRoute::get('login\/{provider}', 'LoginController@redirectToProvider');\nRoute::get('{provider}\/callback', 'LoginController@handleProviderCallback');\nRoute::get('\/home', function() {\n\u00a0\u00a0\u00a0\u00a0return 'User is logged in';\n});<\/code><\/pre>\n<p>Une fois que l&rsquo;utilisateur se sera connect\u00e9 avec Twitter, je le redirigerai vers l&rsquo; <code>home<\/code>itin\u00e9raire. C&rsquo;est juste \u00e0 des fins de d\u00e9monstration. Vous devriez changer cet itin\u00e9raire en quelque chose d&rsquo;autre.<\/p>\n<h3>Connectez-vous avec Twitter dans Laravel<\/h3>\n<p>Il est temps d&rsquo;utiliser le package Socialite maintenant. En utilisant la commande ci-dessous, vous pouvez installer le package Socialite sur votre projet Laravel.<\/p>\n<pre><code>composer require laravel\/socialite<\/code><\/pre>\n<p>Apr\u00e8s avoir install\u00e9 Socialite, nous devons le configurer. Ouvrez le <code>config\/services.php<\/code>et ajoutez la configuration Twitter \u00e0 ce fichier comme suit\u00a0:<\/p>\n<pre><code>'twitter' =&gt; [\n\u00a0\u00a0\u00a0\u00a0'client_id' =&gt; env('TWITTER_API_KEY'),\n\u00a0\u00a0\u00a0\u00a0'client_secret' =&gt; env('TWITTER_API_SECRET_KEY'),\n\u00a0\u00a0\u00a0\u00a0'redirect' =&gt; env('TWITTER_CALLBACK_URL'),\n],<\/code><\/pre>\n<p>Vous remarquerez peut-\u00eatre que j&rsquo;ai utilis\u00e9 la <code>env<\/code>m\u00e9thode pour obtenir les valeurs sp\u00e9cifi\u00e9es. Cela signifie que nous devons d\u00e9finir ces constantes dans le <code>.env<\/code>fichier.<\/p>\n<pre><code>TWITTER_API_KEY=PASTE_TWITTER_API_KEY\nTWITTER_API_SECRET_KEY=PASTE_TWITTER_API_SECRET_KEY\nTWITTER_CALLBACK_URL=http:\/\/localhost:8000\/twitter\/callback<\/code><\/pre>\n<p>Assurez-vous de remplacer les espaces r\u00e9serv\u00e9s par vos cl\u00e9s API r\u00e9elles. Ensuite, dans le <code>LoginController<\/code>, nous \u00e9crivons une fonction qui redirige un utilisateur vers la page de connexion Twitter, et en cas d&rsquo;autorisation r\u00e9ussie, elle connectera l&rsquo;utilisateur.<\/p>\n<p><strong>LoginController.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse Socialite;\nuse AppModelsUser;\nuse Auth;\n\u00a0\nclass LoginController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Where to redirect users after login.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @var string\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0protected $redirectTo = '\/home';\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Call the view\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function index()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('login');\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Redirect the user to the Twitter authentication page.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return Response\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function redirectToProvider($provider)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return Socialite::driver($provider)-&gt;redirect();\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Obtain the user information from Twitter.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return Response\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function handleProviderCallback($provider)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = Socialite::driver($provider)-&gt;user();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$authUser = $this-&gt;findOrCreateUser($user, $provider);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Auth::login($authUser, true);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect($this-&gt;redirectTo);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* If a user has registered before using social auth, return the user\n\u00a0\u00a0\u00a0\u00a0\u00a0* else, create a new user object.\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param\u00a0 $user Socialite user object\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param $provider Social auth provider\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return\u00a0 User\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function findOrCreateUser($user, $provider)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$authUser = User::where('provider_id', $user-&gt;id)-&gt;first();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($authUser) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $authUser;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return User::create([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'name'\u00a0\u00a0\u00a0\u00a0 =&gt; $user-&gt;name,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'email'\u00a0\u00a0\u00a0 =&gt; $user-&gt;email,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'provider' =&gt; $provider,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'provider_id' =&gt; $user-&gt;id\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Rendez-vous sur la page de connexion et cliquez sur le lien \u00ab\u00a0Se connecter avec Twitter\u00a0\u00bb. Terminez le processus et vous devez vous connecter au syst\u00e8me \u00e0 l&rsquo;aide de Twitter. Vous pouvez \u00e9galement trouver des entr\u00e9es d&rsquo;utilisateurs dans le <code>users<\/code>tableau.<\/p>\n<p>J&rsquo;esp\u00e8re que vous pourrez en apprendre davantage sur la connexion avec Twitter dans Laravel en utilisant le package Socialite. J&rsquo;aimerais entendre vos pens\u00e9es ou vos suggestions dans la section des commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/connectez-vous-avec-linkedin-dans-laravel-en-utilisant-laravel-socialite\/\" title=\"Connectez-vous avec LinkedIn dans Laravel en utilisant Laravel Socialite\">Connectez-vous avec LinkedIn dans Laravel en utilisant Laravel Socialite<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/connexion-google-dans-laravel-en-utilisant-laravel-socialite\/\" title=\"Connexion Google dans Laravel en utilisant Laravel Socialite\">Connexion Google dans Laravel en utilisant Laravel Socialite<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans ce tutoriel, nous \u00e9tudions la connexion avec Twitter dans Laravel en utilisant le package Laravel Socialite. La connexion sociale vous aide \u00e0 sauter tout<\/p>\n","protected":false},"author":1,"featured_media":20252,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[497],"tags":[844],"class_list":["post-25747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=25747"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/20252"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=25747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=25747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=25747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}