{"id":26215,"date":"2021-06-12T19:04:00","date_gmt":"2021-06-12T16:04:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26215"},"modified":"2021-10-17T18:19:27","modified_gmt":"2021-10-17T15:19:27","slug":"logige-sisse-twitteris-laravelis-kasutades-teenust-laravel-socialite","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/logige-sisse-twitteris-laravelis-kasutades-teenust-laravel-socialite\/","title":{"rendered":"Logige sisse Twitteris Laravelis, kasutades teenust Laravel Socialite"},"content":{"rendered":"<p>Hiljuti avaldasin artikli <a href=\"https:\/\/themewp.inform.click\/et\/kuidas-lisada-twitteri-oauthi-sisselogimist-veebisaidile-koos-php-ga\/\" title=\"PHP-s sisselogimisega Twitteriga\" >PHP-s sisselogimisega Twitteriga<\/a>. \u00dcks meie lugejatest palus kirjutada Laravelis Twitteriga sisselogimise kohta artikli. Kuigi Laravel on ehitatud PHP programmeerimiskeelele ja ma kirjutasin Twitteris sisselogimisest PHP-s, tean, et varasem \u00f5petus ei sobi Laraveli raamistiku jaoks. Laravelil on oma kaustastruktuur, arendusvoog. Arendaja peaks selles veebirakendusi ehitades j\u00e4rgima Laraveli standardeid.<\/p>\n<p>Laravelil on ametlikud paketid, mis aitavad arendajatel teatud funktsionaalsust saavutada. \u00dcks pakettidest on <a href=\"https:\/\/laravel.com\/docs\/master\/socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Socialite<\/a>. Socialite&#8217;i abil saate integreerida sotsiaalse sisselogimise erinevate pakkujatega, nagu Facebook, Twitter, LinkedIn, Google jne.<\/p>\n<p>Selles artiklis <strong>uurime<\/strong> Laravelis Socialite&#8217;i abil <strong>sisselogimist Twitteriga<\/strong> Laravelis.<\/p>\n<h3>Alustamine<\/h3>\n<p>Alustame v\u00e4rskest Laraveli installatsioonist. Uue Laraveli installi kasutamine pole kohustuslik, saate kasutada ka oma olemasolevat projekti.<\/p>\n<p>Uusima Laraveli installimiseks k\u00e4ivitage j\u00e4rgmine k\u00e4sk:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel twitterlogin<\/code><\/pre>\n<p>P\u00e4rast installimist looge andmebaas ja lisage <code>.env<\/code>faili mandaadid. Ehitame sisselogimiss\u00fcsteemi, nii et peaksime kasutajaandmed andmebaasi salvestama.<\/p>\n<p>See \u00f5petus p\u00f5hineb sisselogimisel Twitteriga, et saaksime kasutaja Twitteri ID p\u00e4rast edukat autentimist. Selle sotsiaalse ID salvestamiseks lisame veerud <code>provider<\/code>ja <code>provider_id<\/code>kasutajate tabelisse. Veerg <code>provider<\/code>salvestab v\u00e4\u00e4rtuse &#8216;twitter&#8217; ja veerg <code>provider_id<\/code>on kasutaja Twitteri ID jaoks.<\/p>\n<p>Sotsiaalse sisselogimise kasutamisel ei pea me paroole salvestama, nii et parooliveerg peaks vaikimisi aktsepteerima v\u00e4\u00e4rtust NULL. Pole mingit garantiid kasutaja e-posti saamiseks p\u00e4rast sotsiaalset sisselogimist, nii et uudishimu huvides peame seadistama ka e-posti veerud, et aktsepteerida v\u00e4\u00e4rtust &quot;NULL&quot;.<\/p>\n<p>Avage kasutajate tabeli migreerimisfail ja lisage allolev kood.<\/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>P\u00e4rast seda k\u00e4ivitage migreerimisk\u00e4sk, mis loob teie andmebaasi tabelid.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Samuti peate kasutajamudelisse lisama <code>provider<\/code>ja <code>provider_id<\/code>veerud.<\/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>Hankige Twitteri volikirjad<\/h3>\n<p>Kuna me integreerime Twitteri sisselogimise Laraveli, peate k\u00f5igepealt hankima oma Twitteri mandaadi. Twitteri rakenduse loomiseks ja volituste saamiseks j\u00e4rgige alltoodud samme.<\/p>\n<ul>\n<li>Logige sisse <a href=\"https:\/\/dev.twitter.com\/apps\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Twitteri arendajakontole<\/a> ja looge uus rakendus.<\/li>\n<li>T\u00e4itke k\u00f5ik kohustuslikud v\u00e4ljad, n\u00e4iteks rakenduse nimi ja kirjeldus.<\/li>\n<li>Lisage oma veebisaidi domeen v\u00e4ljale Veeb.<\/li>\n<li>M\u00e4\u00e4rake tagasihelistamise URL-ks <code>http:\/\/localhost:8000\/twitter\/callback<\/code>. Kohandage URL vastavalt oma n\u00f5udele.<\/li>\n<li>Kui olete registreerunud, kopeerige ja kleepige loodud rakenduse mandaadid (tarbija v\u00f5ti ja saladus), mis vajavad m\u00f5nda aega.<\/li>\n<\/ul>\n<p>Nende kopeeritud mandaatide abil l\u00f5petab teie Laraveli rakendus OAuthi voo, kui kasutajad logivad sisse oma Twitteri kontoga.<\/p>\n<h3>Loo marsruudid ja kontroller<\/h3>\n<p>Twitterisse sisselogimise funktsionaalsuse kaasamiseks peame oma Laraveli projekti lisama koodi. Loome <code>LoginController<\/code>k\u00e4su abil:<\/p>\n<pre><code>php artisan make:controller LoginController<\/code><\/pre>\n<p>Peame lisama terafaili sisselogimislingi. Looge a <code>login.blade.php<\/code>ja lisage sellele j\u00e4rgmine HTML.<\/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>Seda vaadet saate helistada <code>index<\/code>meetodilt <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>J\u00e4rgmisena lisage sellele marsruut. Lisan ka veel m\u00f5ned marsruudid, mida on vaja \u00f5petuse j\u00e4rgmise osa jaoks.<\/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>Kui kasutaja on Twitteriga sisse loginud, suunan nad <code>home<\/code>marsruudile. See on lihtsalt demo eesm\u00e4rgil. Peaksite selle marsruudi millekski muuks muutma.<\/p>\n<h3>Laravelisse logige sisse Twitteriga<\/h3>\n<p>N\u00fc\u00fcd on aeg kasutada paketti Socialite. Alloleva k\u00e4su abil saate paketi Socialite installida oma Laraveli projekti.<\/p>\n<pre><code>composer require laravel\/socialite<\/code><\/pre>\n<p>P\u00e4rast Socialite&#8217;i installimist peame selle konfigureerima. Avage <code>config\/services.php<\/code>ja lisage sellele failile Twitteri konfiguratsioon j\u00e4rgmiselt:<\/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>V\u00f5ite m\u00e4rgata, et kasutasin <code>env<\/code>meetodit m\u00e4\u00e4ratud v\u00e4\u00e4rtuste saamiseks. See t\u00e4hendab, et peame need konstandid <code>.env<\/code>failis m\u00e4\u00e4ratlema .<\/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>Asendage kohat\u00e4ited oma tegelike API-v\u00f5tmetega. J\u00e4rgmisena <code>LoginController<\/code>kirjutame funktsiooni, mis suunab kasutaja Twitteri sisselogimislehele ja edukal autoriseerimisel logib kasutaja sisse.<\/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>Minge sisselogimislehele ja kl\u00f5psake linki &quot;Logi sisse Twitteriga&quot;. Viige protsess l\u00f5pule ja peaksite s\u00fcsteemi sisse logima Twitteri abil. Samuti v\u00f5ite <code>users<\/code>tabelist leida kasutajate kirjeid .<\/p>\n<p>Loodan, et saate Socialite paketi abil \u00f5ppida Laravelis Twitteriga sisselogimise kohta. Tahaksin kuulda teie m\u00f5tteid v\u00f5i ettepanekuid allpool olevas kommentaaride jaotises.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/sisene-laraveli-kaudu-linkediniga-kasutades-teenust-laravel-socialite\/\" title=\"Sisene Laraveli kaudu LinkedIniga, kasutades teenust Laravel Socialite\">Sisene Laraveli kaudu LinkedIniga, kasutades teenust Laravel Socialite<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/google-i-sisselogimine-laravelis-kasutades-teenust-laravel-socialite\/\" title=\"Google&#039;i sisselogimine Laravelis, kasutades teenust Laravel Socialite\">Google&#8217;i sisselogimine Laravelis, kasutades teenust Laravel Socialite<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Selles \u00f5petuses uurime Laraveli Socialite paketi abil Laraveli kaudu sisse logimist Twitteriga. Sotsiaalne sisselogimine aitab teil terviku vahele j\u00e4tta<\/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":[498],"tags":[842],"class_list":["post-26215","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-5","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/comments?post=26215"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26215\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/20252"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=26215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=26215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=26215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}