{"id":25695,"date":"2021-06-12T17:01:00","date_gmt":"2021-06-12T14:01:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25695"},"modified":"2021-10-18T02:30:13","modified_gmt":"2021-10-17T23:30:13","slug":"google-login-in-laravel-mit-laravel-socialite","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/google-login-in-laravel-mit-laravel-socialite\/","title":{"rendered":"Google-Login in Laravel mit Laravel Socialite"},"content":{"rendered":"<p>Vor kurzem habe ich einen Artikel <a href=\"https:\/\/themewp.inform.click\/de\/melden-sie-sich-mit-linkedin-in-laravel-mit-laravel-socialite-an\/\" title=\"Login with LinkedIn Using Laravel Socialite ver\u00f6ffentlicht\" >Login with LinkedIn Using Laravel Socialite ver\u00f6ffentlicht<\/a> und einer unserer Leser fragte nach der Integration von Google Login in Laravel. Die Google-Anmeldung ist auch eine der beliebtesten Plattformen f\u00fcr die Anmeldung in sozialen Netzwerken auf der Website.<\/p>\n<p>Wenn Sie Benutzern erlauben, sich mit ihrem sozialen Profil auf Ihrer Website anzumelden, \u00fcberspringen Sie den Vorgang der Validierung ihrer E-Mail. Ihre Benutzer m\u00fcssen keinen E-Mail-Aktivierungsprozess durchlaufen. Wir k\u00f6nnen uns auf soziale Websites verlassen, da sie bereits Benutzer auf ihrer Plattform validiert haben. Es bietet Ihren Benutzern eine bessere Benutzererfahrung, da sie sich ihre Anmeldeinformationen f\u00fcr Ihre Website nicht merken m\u00fcssen und Sie auch die Codes f\u00fcr den Best\u00e4tigungsablauf nicht hinzuf\u00fcgen m\u00fcssen. Es ist eine Win-Win-Situation.<\/p>\n<p>In diesem Artikel studieren wir Schritt f\u00fcr Schritt die Anleitung zum Hinzuf\u00fcgen von Google Login in Laravel mit Laravel Socialite. Laravel Socialite verarbeitet den OAuth-Flow f\u00fcr die soziale Anmeldung hinter den Kulissen. Dieses Paket beschleunigt den Prozess der Integration von Social Login auf Laravel.<\/p>\n<p>F\u00fcr dieses Tutorial verwende ich eine frische Laravel-Installation, also f\u00fchren Sie den folgenden Befehl aus, der Laravel f\u00fcr Sie installiert:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel googlelogin<\/code><\/pre>\n<p>Erstellen Sie nach der Installation von Laravel eine Datenbank und f\u00fcgen Sie Ihre Datenbankanmeldeinformationen in die <code>.env<\/code>Datei ein. Da wir der Anwendung Social Login hinzuf\u00fcgen, werde ich der Standardbenutzermigrationsdatei 2 weitere Spalten hinzuf\u00fcgen und den Code ein wenig \u00e4ndern.<\/p>\n<p>\u00d6ffnen Sie die Migrationsdatei Ihres Benutzers und f\u00fcgen Sie den folgenden Code zur <code>up<\/code>Methode hinzu.<\/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>In dem obigen Code habe ich zwei Spalten hinzugef\u00fcgt <code>provider<\/code>und <code>provider_id<\/code>die die Werte \u201aGoogle&#8216; und Benutzer-Google &#8211; Profil &#8211; ID bzw. halten. Erstellen Sie die Tabelle &#8218;users&#8216;, indem Sie den Befehl migration ausf\u00fchren.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Sie m\u00fcssen diese beiden Spalten auch zum Benutzermodell hinzuf\u00fcgen.<\/p>\n<p><strong>app\/User.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>Erstellen Sie eine Google-Anwendung und erhalten Sie Ihre Anmeldeinformationen<\/h3>\n<p>Als N\u00e4chstes m\u00fcssen wir ein Projekt in der Google APIs-Konsole erstellen. Wir ben\u00f6tigen die Client-ID und das Client-Geheimnis der Anwendung, um den OAuth-Prozess f\u00fcr die Benutzer abzuschlie\u00dfen.<\/p>\n<p>F\u00fchren Sie die folgenden Schritte aus, um ein Google-Projekt zu erstellen und die Anmeldeinformationen abzurufen. F\u00fcr das Tutorial verwende ich die lokale Server-URL. Sie k\u00f6nnen diese URL Ihren Anforderungen entsprechend anpassen.<\/p>\n<ul>\n<li>Rufen Sie die <a href=\"https:\/\/console.developers.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Google-Entwicklerkonsole auf<\/a>.<\/li>\n<li>Klicken Sie auf das Dropdown-Men\u00fc und erstellen Sie ein neues Projekt, indem Sie auf das (+)-Zeichen klicken. Alternativ k\u00f6nnen Sie auch das vorhandene Projekt ausw\u00e4hlen.<\/li>\n<li>W\u00e4hlen Sie im Projekt-Dashboard in der Seitenleiste Anmeldeinformationen aus.<\/li>\n<li>Klicken Sie auf der Registerkarte Anmeldeinformationen auf das Dropdown-Men\u00fc Anmeldeinformationen erstellen und w\u00e4hlen Sie OAuth-Client-ID aus.<\/li>\n<li>W\u00e4hlen Sie die Webanwendung aus dem Anwendungstyp aus. Geben Sie unter Autorisierte Weiterleitungs-URLs die URL ein <code>http:\/\/localhost:8000\/google\/callback<\/code>.<\/li>\n<\/ul>\n<p>Sobald Sie es gespeichert haben, erhalten Sie das Popup zusammen mit Ihrer Client-ID und Ihrem Client-Geheimnis. Kopieren Sie diese Schl\u00fcssel, die wir in wenigen Augenblicken ben\u00f6tigen.<\/p>\n<h3>Routen und Controller erstellen<\/h3>\n<p>Sie sind mit Ihren API-Schl\u00fcsseln fertig. Um weiter fortzufahren, m\u00fcssen wir nun Routen, Blade-Dateien und Controller erstellen. Erstellen Sie eine <code>LoginController<\/code>mit dem Befehl:<\/p>\n<pre><code>php artisan make:controller LoginController<\/code><\/pre>\n<p>Erstellen Sie danach eine Blade-Datei mit dem Namen <code>login.blade.php<\/code>und f\u00fcgen Sie den folgenden HTML-Code hinzu.<\/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>Rufen Sie diese Ansicht mit der <code>index<\/code>Methode von auf <code>LoginController<\/code>.<\/p>\n<pre><code>public function index()\n{\n\u00a0\u00a0\u00a0\u00a0return view('login');\n}<\/code><\/pre>\n<p>Um diese Ansicht aufzurufen, m\u00fcssen Sie eine Route daf\u00fcr hinzuf\u00fcgen. Lassen Sie uns auch ein paar weitere Routen hinzuf\u00fcgen, die f\u00fcr den n\u00e4chsten Teil des Tutorials erforderlich sind.<\/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>Beachten Sie, dass ich eine <code>home<\/code>Route hinzugef\u00fcgt habe. Wenn sich ein Benutzer bei Google anmeldet, werde ich ihn auf die <code>home<\/code>Route umleiten. Ich behalte es nur zu Demozwecken. Sie sollten diese Route in etwas anderes \u00e4ndern.<\/p>\n<h3>Google-Login in Laravel mit Laravel Socialite<\/h3>\n<p>Bisher sind wir mit der grundlegenden Einrichtung, die f\u00fcr das Social Login erforderlich ist, fertig. Jetzt. Es ist Zeit, die <a href=\"https:\/\/laravel.com\/docs\/master\/socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Socialite-<\/a> Bibliothek zu installieren. Installieren Sie es, indem Sie den folgenden Befehl im Terminal ausf\u00fchren.<\/p>\n<pre><code>composer require laravel\/socialite<\/code><\/pre>\n<p>\u00d6ffnen Sie nach der Installation der Bibliothek die <code>config\/services.php<\/code>Google-Konfiguration und f\u00fcgen Sie sie wie folgt hinzu:<\/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>Da wir die <code>env<\/code>Methode zum Abrufen von Anmeldeinformationen verwendet haben, m\u00fcssen wir diese Anmeldeinformationen in der <code>.env<\/code>Datei hinzuf\u00fcgen .<\/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>Stellen Sie sicher, dass Sie die Platzhalter durch tats\u00e4chliche Werte ersetzen. Schlie\u00dflich m\u00fcssen wir der <code>LoginController.php<\/code>Datei Code hinzuf\u00fcgen, der den Benutzer zur Google-Anmeldeseite umleitet und im Gegenzug die Antwort verarbeitet. In dieser Datei schreiben wir eine Funktion, die einen Benutzer auf die Google-Anmeldeseite umleitet und bei erfolgreicher Autorisierung Benutzerdaten in die Datenbank einf\u00fcgt und den Benutzer anmeldet.<\/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>In unserer Controller-Datei pr\u00fcfen wir, ob der Benutzer mit <code>provider_id<\/code>bereits existiert oder nicht. Wenn sie existiert, geben Sie die aktuelle Benutzerinstanz zur\u00fcck, andernfalls f\u00fcgen Sie sie in die Benutzertabelle ein und melden Sie den Benutzer an.<\/p>\n<p>Ich hoffe, Sie haben Google Login in Laravel mit dem Socialite-Paket kennengelernt. Ich w\u00fcrde gerne Ihre Gedanken und Vorschl\u00e4ge im Kommentarbereich unten h\u00f6ren.<\/p>\n<h4>Zum Thema passende Artikel<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/melden-sie-sich-mit-linkedin-in-laravel-mit-laravel-socialite-an\/\" title=\"Melden Sie sich mit LinkedIn in Laravel mit Laravel Socialite an\">Melden Sie sich mit LinkedIn in Laravel mit Laravel Socialite an<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/melden-sie-sich-mit-twitter-in-laravel-mit-laravel-socialite-an-social\/\" title=\"Melden Sie sich mit Twitter in Laravel mit Laravel Socialite an Social\">Melden Sie sich mit Twitter in Laravel mit Laravel Socialite an Social<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-fugen-sie-google-oauth-login-in-website-mit-php-hinzu\/\" title=\"So f\u00fcgen Sie Google OAuth-Login in Website mit PHP hinzu\">So f\u00fcgen Sie Google OAuth-Login in Website mit PHP hinzu<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Aufnahmequelle:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Artikel untersuchen wir Google Login in Laravel mit Laravel Socialite. Die Verwendung von Social Login bietet dem Endbenutzer eine bessere Benutzererfahrung<\/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":[496],"tags":[845],"class_list":["post-25695","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25695","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/comments?post=25695"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25695\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/20248"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=25695"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=25695"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=25695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}