{"id":26209,"date":"2021-06-12T12:23:00","date_gmt":"2021-06-12T09:23:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26209"},"modified":"2021-10-17T18:19:48","modified_gmt":"2021-10-17T15:19:48","slug":"sisene-laraveli-kaudu-linkediniga-kasutades-teenust-laravel-socialite","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/sisene-laraveli-kaudu-linkediniga-kasutades-teenust-laravel-socialite\/","title":{"rendered":"Sisene Laraveli kaudu LinkedIniga, kasutades teenust Laravel Socialite"},"content":{"rendered":"<p>Sotsiaalse sisselogimiss\u00fcsteemi lisamine veebisaidile on t\u00e4nap\u00e4eval trend. Sotsiaalse sisselogimise integreerimisega j\u00e4tab see kasutaja kinnitamisprotsessi vahele. Sotsiaalsed saidid on kasutajaid juba kinnitanud, nii et meie rakendus ei pea kasutajatega sama protsessi j\u00e4rgima. V\u00f5ime tugineda sotsiaalsetele saitidele ja lubada kasutajal meie s\u00fcsteemi kasutada, kui ta meie veebisaidil sotsiaalse saidi kaudu sisse logib. Facebook, Twitter, Google, LinkedIn on populaarsed sotsiaalsed saidid, mis on tavaliselt veebisaidile sotsiaalse sisselogimisena integreeritud. Selles artiklis k\u00e4sitleme Laraveli LinkedIniga sisselogimist.<\/p>\n<p>Meie \u00f5petuse jaoks integreerin LinkedIni sisselogimise v\u00e4rskesse Laraveli installi. Kavatsen installida Laraveli, luua kasutajate tabeli ja installida sotsiaalse sisselogimiss\u00fcsteemi integreerimiseks vajalikud paketid.<\/p>\n<p>Laraveli installimiseks k\u00e4ivitage allolev k\u00e4sk. Siin olen koostamas projekti nimega &quot;loginlog&quot;.<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel linkedinlogin<\/code><\/pre>\n<p>P\u00e4rast installimist looge andmebaas ja m\u00e4\u00e4rake <code>.env<\/code>failis mandaadid. Ehitame sisselogimiss\u00fcsteemi, nii et peaksime kasutajaandmed andmebaasi salvestama.<\/p>\n<p>See \u00f5petus p\u00f5hineb LinkedIni sisselogimisel, nii et p\u00e4rast edukat autentimist saame kasutaja LinkedIni profiili ID. Selle sotsiaalse ID salvestamiseks lisame veerud pakkuja ja pakkuja ID. Siin teenuseosutaja veerus salvestatakse v\u00e4\u00e4rtus &#8216;linkedin&#8217; ja teenuse_ ID salvestab kasutaja sotsiaalse ID.<\/p>\n<p>Kui kasutasime sotsiaalset sisselogimist, ei pea me paroole salvestama, nii et parooliveeru v\u00e4\u00e4rtus peaks vaikimisi aktsepteerima v\u00e4\u00e4rtust &quot;NULL&quot;. Pole mingit garantiid kasutaja e-posti saamiseks p\u00e4rast sotsiaalset sisselogimist, nii et uudishimu huvides peame seadistama ka e-posti veeru aktsepteerima 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>K\u00e4ivitage allpool k\u00e4sk, mis loob meie andmebaasis tabelid.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Samuti peame need kaks veergu oma kasutajamudelisse lisama.<\/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>Looge LinkedIni rakendus<\/h3>\n<p>LinkedIni sisselogimise integreerimiseks peaksite looma rakenduse oma LinkedIni kontole. Vajame kliendi ID-d, LinkedIni rakenduse kliendisaladust. Samuti peame rakenduses m\u00e4\u00e4rama volitatud \u00fcmbersuunamise URL-i.<\/p>\n<ul>\n<li>Minge <a href=\"https:\/\/www.linkedin.com\/secure\/developer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">LinkedIni arendajav\u00f5rku<\/a>.<\/li>\n<li>Kl\u00f5psake nuppu &#8216;Loo rakendus&#8217;.<\/li>\n<li>T\u00e4itke teave vormil.<\/li>\n<li>Lisage <code>http:\/\/localhost:8000\/linkedin\/callback<\/code>v\u00e4ljale Volitatud \u00fcmbersuunamise URL-id.<\/li>\n<li>Kopeerige kliendi ID ja kliendi saladuse v\u00f5tmed.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20253-6081d37e35c27.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20253-6081d37e35c27.png\" alt=\"Sisene Laraveli kaudu LinkedIniga, kasutades teenust Laravel Socialite\" ><\/a><\/p>\n<p>P\u00e4rast \u00fclaltoodud toiminguid peate oma LinkedIni rakendusse lisama toote &quot;Logi sisse LinkedIniga&quot;. Kl\u00f5psake vahekaarti \u201etooted&quot; ja valige \u201eLogi sisse LinkedIniga&#8221;. Selle toote valimisel l\u00e4heb see \u00fclevaatamisele ja lisatakse seej\u00e4rel lisatud toodetena. See v\u00f5ib \u00fclevaatamiseks aega v\u00f5tta. Minu puhul v\u00f5ttis see aega umbes 10 minutit.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20253-6081d37e35c27.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20253-6081d37e35c27.png\" alt=\"Sisene Laraveli kaudu LinkedIniga, kasutades teenust Laravel Socialite\" ><\/a><\/p>\n<h3>Loo marsruudid ja kontroller<\/h3>\n<p>N\u00fc\u00fcd saame hakata Laravelis koodi lisama. Looge kontroller <code>LoginController<\/code>k\u00e4suga:<\/p>\n<pre><code>php artisan make:controller LoginController<\/code><\/pre>\n<p>J\u00e4rgmisena looge labafail <code>login.blade.php<\/code>ja lisage sellele j\u00e4rgmine HTML.<\/p>\n<pre><code>&lt;a href=\"{{ url('\/login\/linkedin') }}\"&gt;\n\u00a0\u00a0\u00a0\u00a0{{ __('Login with LinkedIn') }}\n&lt;\/a&gt;<\/code><\/pre>\n<p>Nimetame seda vaade <code>index<\/code>meetod <code>LoginController<\/code>j\u00e4rgmiselt.<\/p>\n<pre><code>public function index()\n{\n\u00a0\u00a0\u00a0\u00a0return view('login');\n}<\/code><\/pre>\n<p>M\u00e4\u00e4ratleme selle marsruudid. Lisan ka veel m\u00f5ned marsruudid, mida n\u00f5utakse \u00f5petuse j\u00e4rgmises osas.<\/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 logib sisse LinkedIniga, suunan nad <code>home<\/code>marsruudile. See on lihtsalt demo eesm\u00e4rgil. Peaksite selle marsruudi millekski muuks muutma.<\/p>\n<h3>Logi sisse LinkedIn Laraveliga<\/h3>\n<p>Laravelil on ametlik pakett Socialite. See pakett aitab meil Laraveli sotsiaalse sisselogimiss\u00fcsteemi h\u00f5lpsasti integreerida. Installige see pakett k\u00e4suga:<\/p>\n<pre><code>composer require laravel\/socialite<\/code><\/pre>\n<p>P\u00e4rast teegi installimist avage <code>config\/services.php<\/code>ja lisage LinkedIni konfiguratsioon j\u00e4rgmiselt:<\/p>\n<pre><code>'linkedin' =&gt; [\n\u00a0\u00a0\u00a0\u00a0'client_id' =&gt; env('LINKEDIN_CLIENT_ID'),\n\u00a0\u00a0\u00a0\u00a0'client_secret' =&gt; env('LINKEDIN_CLIENT_SECRET'),\n\u00a0\u00a0\u00a0\u00a0'redirect' =&gt; env('LINKEDIN_CALLBACK_URL'),\n],<\/code><\/pre>\n<p>N\u00fc\u00fcd peame <code>.env<\/code>faili lisama oma p\u00fcsiv\u00e4\u00e4rtused .<\/p>\n<pre><code>LINKEDIN_CLIENT_ID=YOUR_CLIENT_ID\nLINKEDIN_CLIENT_SECRET=YOUR_CLIENT_SECRET\nLINKEDIN_CALLBACK_URL=http:\/\/localhost:8000\/linkedin\/callback<\/code><\/pre>\n<p>Asendage kohat\u00e4ited nende tegelike v\u00e4\u00e4rtustega. L\u00f5plikud kohandused peaksid toimuma <code>LoginController.php<\/code>failis. Selles failis kirjutame funktsiooni, mis suunab kasutaja LinkedIni 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\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\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Redirect the user to the Linkedin 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;scopes(['r_liteprofile', 'r_emailaddress'])-&gt;redirect();\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Obtain the user information from Linkedin.\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\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>Meie <code>LoginController<\/code>m\u00e4\u00e4rasime ulatused, <code>['r_liteprofile',\u00a0'r_emailaddress']<\/code>mis on vajalikud LinkedIni kasutaja p\u00f5hiteabe hankimiseks. Tagasihelistamismeetodis kontrollime, kas kasutaja on olemas ja kui pole, siis lisage kasutaja andmebaasi.<\/p>\n<p>Loodetavasti saate aru, kuidas Laravelis LinkedIniga sisse logida. Tahaksin kuulda teie m\u00f5tteid ja ettepanekuid allpool olevas kommentaaride jaotises.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\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<li><a href=\"https:\/\/themewp.inform.click\/et\/kuidas-lisada-google-oauthi-sisselogimist-veebisaidile-koos-php-ga\/\" title=\"Kuidas lisada Google OAuthi sisselogimist veebisaidile koos PHP-ga\">Kuidas lisada Google OAuthi sisselogimist veebisaidile koos PHP-ga<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/looge-php-s-mitmekeelne-veebisait-kasutades-laraveli-raamistikku\/\" title=\"Looge PHP-s mitmekeelne veebisait, kasutades Laraveli raamistikku\">Looge PHP-s mitmekeelne veebisait, kasutades Laraveli raamistikku<\/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 artiklis n\u00e4itan teile, kuidas lisada rakendusega Laravel Socialite oma Laraveli rakenduses sisselogimist LinkedIniga. Kasutajate sotsiaalse sisselogimise abil<\/p>\n","protected":false},"author":1,"featured_media":20254,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[498],"tags":[842],"class_list":["post-26209","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\/26209","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=26209"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26209\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/20254"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=26209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=26209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=26209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}