{"id":25758,"date":"2021-06-12T17:18:00","date_gmt":"2021-06-12T14:18:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25758"},"modified":"2021-10-18T02:05:00","modified_gmt":"2021-10-17T23:05:00","slug":"connexion-google-dans-laravel-en-utilisant-laravel-socialite","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/connexion-google-dans-laravel-en-utilisant-laravel-socialite\/","title":{"rendered":"Connexion Google dans Laravel en utilisant Laravel Socialite"},"content":{"rendered":"<p>R\u00e9cemment, j&rsquo;ai publi\u00e9 un article <a href=\"https:\/\/themewp.inform.click\/fr\/connectez-vous-avec-linkedin-dans-laravel-en-utilisant-laravel-socialite\/\" title=\"Login with LinkedIn Using Laravel Socialite\" >Login with LinkedIn Using Laravel Socialite<\/a> et l&rsquo;un de nos lecteurs a pos\u00e9 des questions sur l&rsquo;int\u00e9gration de Google Login dans Laravel. La connexion Google est \u00e9galement l&rsquo;une des plates-formes populaires utilis\u00e9es pour la connexion sociale sur le site Web.<\/p>\n<p>Lorsque vous autorisez les utilisateurs \u00e0 se connecter avec leur profil social sur votre site Web, vous ignorez le processus de validation de leur e-mail. Vos utilisateurs n&rsquo;ont pas besoin de suivre un processus d&rsquo;activation par e-mail. Nous pouvons nous appuyer sur les sites sociaux car ils ont d\u00e9j\u00e0 valid\u00e9 les utilisateurs sur leur plateforme. Il offre une meilleure exp\u00e9rience utilisateur \u00e0 vos utilisateurs car ils n&rsquo;ont pas besoin de se souvenir de leurs identifiants de connexion pour votre site Web et vous \u00e9vite \u00e9galement d&rsquo;ajouter les codes pour le flux de v\u00e9rification. C&rsquo;est une situation gagnant-gagnant.<\/p>\n<p>Dans cet article, nous \u00e9tudions un guide \u00e9tape par \u00e9tape sur l&rsquo;ajout de Google Login dans Laravel \u00e0 l&rsquo;aide de Laravel Socialite. Laravel socialite g\u00e8re le flux OAuth pour la connexion sociale dans les coulisses. Ce package acc\u00e9l\u00e8re le processus d&rsquo;int\u00e9gration de la connexion sociale sur Laravel.<\/p>\n<p>Pour ce tutoriel, j&rsquo;utiliserai une nouvelle installation de Laravel, alors ex\u00e9cutez la commande ci-dessous qui installera Laravel pour vous\u00a0:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel googlelogin<\/code><\/pre>\n<p>Lors de l&rsquo;installation de Laravel, cr\u00e9ez une base de donn\u00e9es et ajoutez vos informations d&rsquo;identification de base de donn\u00e9es dans le <code>.env<\/code>fichier. Au fur et \u00e0 mesure que nous ajoutons la connexion sociale dans l&rsquo;application, j&rsquo;ajouterai 2 colonnes suppl\u00e9mentaires au fichier de migration des utilisateurs par d\u00e9faut et j&rsquo;ai l\u00e9g\u00e8rement modifi\u00e9 son code.<\/p>\n<p>Ouvrez le fichier de migration de votre utilisateur et ajoutez le code ci-dessous \u00e0 la <code>up<\/code>m\u00e9thode.<\/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;bigIncrements('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>Dans le code ci-dessus, j&rsquo;ai ajout\u00e9 2 colonnes <code>provider<\/code>et <code>provider_id<\/code>qui contiendront respectivement les valeurs &lsquo;google&rsquo; et l&rsquo;identifiant de profil Google de l&rsquo;utilisateur. Cr\u00e9ez la table &lsquo;users&rsquo; en ex\u00e9cutant la commande migrate.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Vous devez \u00e9galement ajouter ces 2 colonnes 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>Cr\u00e9ez une application Google et obtenez vos informations d&rsquo;identification<\/h3>\n<p>Ensuite, nous devons cr\u00e9er un projet sur la console des API Google. Nous aurons besoin de l&rsquo;ID client et du secret client de l&rsquo;application pour terminer le processus OAuth pour les utilisateurs.<\/p>\n<p>Suivez les \u00e9tapes ci-dessous pour cr\u00e9er un projet Google et obtenir les informations d&rsquo;identification. Pour le tutoriel, j&rsquo;utilise l&rsquo;URL du serveur local. Vous pouvez ajuster cette URL selon vos besoins.<\/p>\n<ul>\n<li>Acc\u00e9dez \u00e0 la <a href=\"https:\/\/console.developers.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">console d\u00e9veloppeur de Google<\/a>.<\/li>\n<li>Cliquez sur la liste d\u00e9roulante et cr\u00e9ez un nouveau projet en cliquant sur le signe (+). Alternativement, vous pouvez \u00e9galement s\u00e9lectionner le projet existant.<\/li>\n<li>Sur le tableau de bord du projet, s\u00e9lectionnez Informations d&rsquo;identification dans la barre lat\u00e9rale.<\/li>\n<li>Sous l&rsquo;onglet Informations d&rsquo;identification, cliquez sur la liste d\u00e9roulante Cr\u00e9er des informations d&rsquo;identification et s\u00e9lectionnez ID client OAuth.<\/li>\n<li>S\u00e9lectionnez l&rsquo;application Web dans le type d&rsquo;application. Dans les URL de redirection autoris\u00e9es, saisissez l&rsquo;URL <code>http:\/\/localhost:8000\/google\/callback<\/code>.<\/li>\n<\/ul>\n<p>Une fois que vous l&rsquo;avez enregistr\u00e9, vous obtiendrez la fen\u00eatre contextuelle avec votre identifiant client et votre secret client. Copiez ces cl\u00e9s dont nous aurons besoin dans quelques instants.<\/p>\n<h3>Cr\u00e9er des routes et un contr\u00f4leur<\/h3>\n<p>Vous \u00eates pr\u00eat avec vos cl\u00e9s API. Maintenant, pour aller plus loin, nous devons cr\u00e9er des routes, un fichier lame et un contr\u00f4leur. Cr\u00e9ez 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>Apr\u00e8s cela, cr\u00e9ez un fichier lame appel\u00e9 <code>login.blade.php<\/code>et ajoutez-y le code HTML ci-dessous.<\/p>\n<pre><code>&lt;a href=\"{{ url('\/login\/google') }}\"&gt;\n\u00a0\u00a0\u00a0\u00a0{{ __('Login with Google') }}\n&lt;\/a&gt;<\/code><\/pre>\n<p>Appelez cette vue \u00e0 partir de la <code>index<\/code>m\u00e9thode de <code>LoginController<\/code>.<\/p>\n<pre><code>public function index()\n{\n\u00a0\u00a0\u00a0\u00a0return view('login');\n}<\/code><\/pre>\n<p>Pour appeler cette vue, vous devez lui ajouter une route. Ajoutons \u00e9galement quelques routes suppl\u00e9mentaires qui n\u00e9cessiteront 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>Notez que j&rsquo;ai ajout\u00e9 un <code>home<\/code>itin\u00e9raire. Lorsqu&rsquo;un utilisateur se connectera avec Google, je le redirigerai vers la <code>home<\/code>route. Je le garde juste \u00e0 des fins de d\u00e9monstration. Vous devriez changer cet itin\u00e9raire en quelque chose d&rsquo;autre.<\/p>\n<h3>Connexion Google dans Laravel en utilisant Laravel Socialite<\/h3>\n<p>Jusqu&rsquo;\u00e0 pr\u00e9sent, nous en avons termin\u00e9 avec la configuration de base requise pour la connexion sociale. \u00c0 pr\u00e9sent. il est temps d&rsquo;installer la biblioth\u00e8que <a href=\"https:\/\/laravel.com\/docs\/master\/socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Socialite<\/a>. Installez-le en ex\u00e9cutant la commande ci-dessous dans le terminal.<\/p>\n<pre><code>composer require laravel\/socialite<\/code><\/pre>\n<p>Lors de l&rsquo;installation de la biblioth\u00e8que, ouvrez le <code>config\/services.php<\/code>et ajoutez la configuration Google comme suit\u00a0:<\/p>\n<pre><code>'google' =&gt; [\n\u00a0\u00a0\u00a0\u00a0'client_id'\u00a0\u00a0\u00a0\u00a0 =&gt; env('GOOGLE_CLIENT_ID'),\n\u00a0\u00a0\u00a0\u00a0'client_secret' =&gt; env('GOOGLE_CLIENT_SECRET'),\n\u00a0\u00a0\u00a0\u00a0'redirect'\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; env('GOOGLE_REDIRECT_URL'),\n],<\/code><\/pre>\n<p>Comme nous avons utilis\u00e9 la <code>env<\/code>m\u00e9thode pour obtenir les informations d&rsquo;identification, nous devons ajouter ces informations d&rsquo;identification dans le <code>.env<\/code>fichier.<\/p>\n<pre><code>GOOGLE_CLIENT_ID=YOUR_CLIENT_ID\nGOOGLE_CLIENT_SECRET=YOUR_CLIENT_SECRET\nGOOGLE_REDIRECT_URL=http:\/\/localhost:8000\/google\/callback<\/code><\/pre>\n<p>Assurez-vous de remplacer les espaces r\u00e9serv\u00e9s par des valeurs r\u00e9elles. Enfin, nous devons ajouter du code dans un <code>LoginController.php<\/code>fichier qui redirige l&rsquo;utilisateur vers la page de connexion Google et g\u00e8re en retour la r\u00e9ponse. Dans ce fichier, nous \u00e9crivons une fonction qui redirige un utilisateur vers la page de connexion Google et en cas d&rsquo;autorisation r\u00e9ussie, elle ins\u00e9rera les d\u00e9tails de l&rsquo;utilisateur dans la base de donn\u00e9es et connectera l&rsquo;utilisateur.<\/p>\n<p><strong>LoginController.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\u00a0\nnamespace AppHttpControllers;\n\u00a0\u00a0\nuse IlluminateHttpRequest;\nuse Socialite;\nuse AppModelsUser;\nuse Auth;\n\u00a0\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 Google 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 Google.\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>Dans notre fichier contr\u00f4leur, nous v\u00e9rifions si l&rsquo;utilisateur avec <code>provider_id<\/code>existe d\u00e9j\u00e0 ou non. S&rsquo;il existe, renvoyez l&rsquo;instance utilisateur actuelle, sinon ins\u00e9rez-la dans la table des utilisateurs et connectez l&rsquo;utilisateur.<\/p>\n<p>J&rsquo;esp\u00e8re que vous avez entendu parler de Google Login dans Laravel en utilisant le package Socialite. J&rsquo;aimerais entendre vos pens\u00e9es et 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\/connectez-vous-avec-twitter-dans-laravel-en-utilisant-laravel-socialite\/\" title=\"Connectez-vous avec Twitter dans Laravel en utilisant Laravel Socialite\">Connectez-vous avec Twitter dans Laravel en utilisant Laravel Socialite<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-ajouter-une-connexion-google-oauth-sur-un-site-web-avec-php\/\" title=\"Comment ajouter une connexion Google OAuth sur un site Web avec PHP\">Comment ajouter une connexion Google OAuth sur un site Web avec PHP<\/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 cet article, nous \u00e9tudions Google Login dans Laravel en utilisant Laravel Socialite. L&rsquo;utilisation de la connexion sociale offre une meilleure exp\u00e9rience utilisateur \u00e0 l&rsquo;utilisateur final<\/p>\n","protected":false},"author":1,"featured_media":20248,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[497],"tags":[844],"class_list":["post-25758","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\/25758","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=25758"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/20248"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=25758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=25758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=25758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}