{"id":25684,"date":"2021-06-12T18:29:00","date_gmt":"2021-06-12T15:29:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25684"},"modified":"2021-10-18T02:30:09","modified_gmt":"2021-10-17T23:30:09","slug":"melden-sie-sich-mit-twitter-in-laravel-mit-laravel-socialite-an-social","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/melden-sie-sich-mit-twitter-in-laravel-mit-laravel-socialite-an-social\/","title":{"rendered":"Melden Sie sich mit Twitter in Laravel mit Laravel Socialite an Social"},"content":{"rendered":"<p>K\u00fcrzlich habe ich einen Artikel \u00fcber <a href=\"https:\/\/themewp.inform.click\/de\/so-fuegen-sie-twitter-oauth-login-in-website-mit-php-hinzu\/\" title=\"Login mit Twitter in PHP ver\u00f6ffentlicht\" >Login mit Twitter in PHP ver\u00f6ffentlicht<\/a>. Einer unserer Leser bat darum, einen Artikel \u00fcber das Einloggen mit Twitter in Laravel zu schreiben. Obwohl Laravel auf der Programmiersprache PHP basiert und ich \u00fcber die Twitter-Anmeldung in PHP geschrieben habe, wei\u00df ich, dass das bisherige Tutorial nicht f\u00fcr das Laravel-Framework geeignet ist. Laravel hat seine eigene Ordnerstruktur, den Entwicklungsfluss. Ein Entwickler sollte beim Erstellen von Webanwendungen darin die Standards von Laravel befolgen.<\/p>\n<p>Laravel hat seine offiziellen Pakete, die Entwicklern helfen, bestimmte Funktionen zu erreichen. Eines der Pakete ist <a href=\"https:\/\/laravel.com\/docs\/master\/socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Socialite<\/a>. Mit Socialite k\u00f6nnen Sie Social Login mit verschiedenen Anbietern wie Facebook, Twitter, LinkedIn, Google usw. integrieren.<\/p>\n<p>In diesem Artikel untersuchen wir <strong>Login mit Twitter in Laravel<\/strong> mit Laravel Socialite.<\/p>\n<h3>Einstieg<\/h3>\n<p>Beginnen wir mit der frischen Laravel-Installation. Es ist nicht zwingend erforderlich, eine neue Laravel-Installation zu verwenden, Sie k\u00f6nnen auch Ihr bestehendes Projekt verwenden.<\/p>\n<p>F\u00fchren Sie den folgenden Befehl aus, um das neueste Laravel zu installieren:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel twitterlogin<\/code><\/pre>\n<p>Erstellen Sie nach der Installation die Datenbank und f\u00fcgen Sie die Anmeldeinformationen in die <code>.env<\/code>Datei ein. Wir bauen ein Login-System, damit wir Benutzerdaten in der Datenbank speichern sollten.<\/p>\n<p>Dieses Tutorial basiert auf Mit Twitter anmelden, sodass wir die Twitter-ID des Benutzers nach erfolgreicher Authentifizierung erhalten. Um diese soziale ID zu speichern, f\u00fcgen wir Spalten <code>provider<\/code>und <code>provider_id<\/code>zur Tabelle &#8218;Benutzer&#8216; hinzu. Die Spalte <code>provider<\/code>speichert den Wert als &#8218;twitter&#8216; und eine Spalte <code>provider_id<\/code>ist f\u00fcr die Twitter-ID des Benutzers.<\/p>\n<p>Wenn wir Social Login verwenden, m\u00fcssen wir keine Passw\u00f6rter speichern, daher sollte die Passwortspalte standardm\u00e4\u00dfig den Wert &#8218;NULL&#8216; akzeptieren. Es gibt keine Garantie, die E-Mail des Benutzers nach der Anmeldung in sozialen Netzwerken zu erhalten, daher m\u00fcssen wir aus Neugier auch die E-Mail-Spalten so einstellen, dass sie den Wert &#8218;NULL&#8216; akzeptieren.<\/p>\n<p>\u00d6ffnen Sie die Tabellenmigrationsdatei &#8218;users&#8216; und f\u00fcgen Sie den folgenden Code 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;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>F\u00fchren Sie danach den Migrationsbefehl aus, der Tabellen in Ihrer Datenbank erstellt.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Au\u00dferdem m\u00fcssen Sie dem Benutzermodell die Spalten <code>provider<\/code>und hinzuf\u00fcgen <code>provider_id<\/code>.<\/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>Holen Sie sich Twitter-Anmeldeinformationen<\/h3>\n<p>Da wir das Twitter-Login in Laravel integrieren werden, m\u00fcssen Sie zuerst Ihre Twitter-Anmeldeinformationen abrufen. Befolgen Sie die folgenden Schritte, um eine Twitter-App zu erstellen und Ihre Anmeldeinformationen abzurufen.<\/p>\n<ul>\n<li>Melden Sie sich beim <a href=\"https:\/\/dev.twitter.com\/apps\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Twitter-Entwicklerkonto an<\/a> und erstellen Sie eine neue Anwendung.<\/li>\n<li>F\u00fcllen Sie alle erforderlichen Felder wie den Anwendungsnamen und die Beschreibung aus.<\/li>\n<li>F\u00fcgen Sie Ihre Website-Domain im Feld Website hinzu.<\/li>\n<li>Legen Sie die R\u00fcckruf-URL als <code>http:\/\/localhost:8000\/twitter\/callback<\/code>. Passen Sie die URL gem\u00e4\u00df Ihren Anforderungen an.<\/li>\n<li>Nachdem Sie sich registriert haben, kopieren Sie die erstellten Anmeldeinformationen (Consumer Key und Secret), die einige Zeit ben\u00f6tigen, und f\u00fcgen Sie sie ein.<\/li>\n<\/ul>\n<p>Mit diesen kopierten Anmeldeinformationen schlie\u00dft Ihre Laravel-Anwendung den OAuth-Flow ab, wenn sich Benutzer mit ihrem Twitter-Konto anmelden.<\/p>\n<h3>Routen und Controller erstellen<\/h3>\n<p>Um die Funktionalit\u00e4t der Anmeldung mit Twitter zu integrieren, m\u00fcssen wir unserem Laravel-Projekt einen Code hinzuf\u00fcgen. Erstellen wir eine <code>LoginController<\/code>mit dem Befehl:<\/p>\n<pre><code>php artisan make:controller LoginController<\/code><\/pre>\n<p>Wir m\u00fcssen einen Login-Link in der Blade-Datei hinzuf\u00fcgen. Erstellen Sie eine <code>login.blade.php<\/code>und f\u00fcgen Sie den folgenden HTML- Code hinzu.<\/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>Sie k\u00f6nnen diese Ansicht aus der <code>index<\/code>Methode von aufrufen <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>Als n\u00e4chstes f\u00fcgen Sie die Route daf\u00fcr hinzu. Ich f\u00fcge auch einige weitere Routen hinzu, 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>Nachdem sich der Benutzer bei Twitter angemeldet hat, werde ich ihn auf die <code>home<\/code>Route umleiten. Es ist nur f\u00fcr Demozwecke. Sie sollten diese Route in etwas anderes \u00e4ndern.<\/p>\n<h3>Einloggen mit Twitter in Laravel<\/h3>\n<p>Jetzt ist es an der Zeit, das Socialite-Paket zu nutzen. Mit dem folgenden Befehl k\u00f6nnen Sie das Socialite-Paket in Ihrem Laravel-Projekt installieren.<\/p>\n<pre><code>composer require laravel\/socialite<\/code><\/pre>\n<p>Nach der Installation von Socialite m\u00fcssen wir es konfigurieren. \u00d6ffnen Sie die <code>config\/services.php<\/code>und f\u00fcgen Sie die Twitter-Konfiguration wie folgt zu dieser Datei hinzu:<\/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>Sie werden vielleicht feststellen, dass ich die <code>env<\/code>Methode verwendet habe, um die angegebenen Werte zu erhalten. Das bedeutet, dass wir diese Konstanten in der <code>.env<\/code>Datei definieren m\u00fcssen.<\/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>Stellen Sie sicher, dass Sie die Platzhalter durch Ihre tats\u00e4chlichen API-Schl\u00fcssel ersetzen. Als n\u00e4chstes <code>LoginController<\/code>schreiben wir eine Funktion, die einen Benutzer auf die Twitter-Anmeldeseite umleitet und bei erfolgreicher Autorisierung den Benutzer einloggt.<\/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>Gehen Sie zur Anmeldeseite und klicken Sie auf den Link \u201eMit Twitter anmelden&#8220;. Schlie\u00dfen Sie den Vorgang ab und Sie sollten sich \u00fcber Twitter beim System anmelden. In der <code>users<\/code>Tabelle k\u00f6nnen Sie auch Eintr\u00e4ge von Benutzern finden .<\/p>\n<p>Ich hoffe, Sie erfahren mehr \u00fcber die Anmeldung bei Twitter in Laravel mit dem Socialite-Paket. Ich w\u00fcrde gerne Ihre Gedanken oder 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\/google-login-in-laravel-mit-laravel-socialite\/\" title=\"Google-Login in Laravel mit Laravel Socialite\">Google-Login in Laravel mit Laravel Socialite<\/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 Tutorial untersuchen wir Login mit Twitter in Laravel mit dem Laravel Socialite-Paket. Social Login hilft Ihnen, das Ganze zu \u00fcberspringen<\/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":[496],"tags":[845],"class_list":["post-25684","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\/25684","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=25684"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25684\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/20252"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=25684"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=25684"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=25684"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}