{"id":25691,"date":"2021-06-12T19:05:00","date_gmt":"2021-06-12T16:05:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25691"},"modified":"2021-10-17T20:18:49","modified_gmt":"2021-10-17T17:18:49","slug":"kirjaudu-twitteriin-laravelissa-laravel-socialiten-avulla","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/kirjaudu-twitteriin-laravelissa-laravel-socialiten-avulla\/","title":{"rendered":"Kirjaudu Twitteriin Laravelissa Laravel Socialiten avulla"},"content":{"rendered":"<p>Olen \u00e4skett\u00e4in julkaissut artikkelin <a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-lisata-twitter-oauth-kirjautumista-verkkosivustolle-php-n-avulla\/\" title=\"Kirjaudu sis\u00e4\u00e4n Twitterill\u00e4 PHP: ss\u00e4\" >Kirjaudu sis\u00e4\u00e4n Twitterill\u00e4 PHP: ss\u00e4<\/a>. Yksi lukijoistamme pyysi kirjoittamaan artikkelin kirjautumisesta Twitteriin Laravelissa. Vaikka Laravel on rakennettu PHP-ohjelmointikielelle ja kirjoitin Twitter-kirjautumisesta PHP: ss\u00e4, tied\u00e4n, ett\u00e4 aiempi opetusohjelma ei sovellu Laravel-kehykseen. Laravelilla on oma kansiorakenteensa, kehitysvirta. Kehitt\u00e4j\u00e4n tulisi noudattaa Laravelin standardeja rakentaessaan siihen verkkosovelluksia.<\/p>\n<p>Laravelilla on viralliset paketit, jotka auttavat kehitt\u00e4ji\u00e4 saavuttamaan tietyt toiminnot. Yksi paketeista on <a href=\"https:\/\/laravel.com\/docs\/master\/socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Socialite<\/a>. Socialite-sovelluksen avulla voit integroida sosiaalisen sis\u00e4\u00e4nkirjautumisen eri palveluntarjoajille, kuten Facebook, Twitter, LinkedIn, Google jne.<\/p>\n<p>T\u00e4ss\u00e4 artikkelissa tutkitaan <strong>sis\u00e4\u00e4nkirjautumista Twitterill\u00e4 Laravelissa<\/strong> Laravel Socialiten avulla.<\/p>\n<h3>P\u00e4\u00e4st\u00e4 alkuun<\/h3>\n<p>Aloitetaan tuoreesta Laravel-asennuksesta. Uuden Laravel-asennuksen k\u00e4ytt\u00f6 ei ole pakollista, vaan voit k\u00e4ytt\u00e4\u00e4 my\u00f6s nykyist\u00e4 projektiasi.<\/p>\n<p>Asenna uusin Laravel suorittamalla seuraava komento:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel twitterlogin<\/code><\/pre>\n<p>Luo asennuksen j\u00e4lkeen tietokanta ja lis\u00e4\u00e4 tunnistetiedot <code>.env<\/code>tiedostoon. Rakennamme kirjautumisj\u00e4rjestelm\u00e4\u00e4, joten meid\u00e4n tulisi tallentaa k\u00e4ytt\u00e4j\u00e4n tiedot tietokantaan.<\/p>\n<p>T\u00e4m\u00e4 opetusohjelma perustuu Kirjaudu sis\u00e4\u00e4n Twitterill\u00e4, joten saamme k\u00e4ytt\u00e4j\u00e4n Twitter-tunnuksen onnistuneen todennuksen j\u00e4lkeen. T\u00e4m\u00e4n sosiaalisen tunnuksen tallentamiseksi lis\u00e4\u00e4mme sarakkeita <code>provider<\/code>ja <code>provider_id<\/code>k\u00e4ytt\u00e4jien taulukkoon. Sarake <code>provider<\/code>tallentaa arvon nimell\u00e4 <code><\/code> twitter &#8221; ja sarake <code>provider_id<\/code>on k\u00e4ytt\u00e4j\u00e4n Twitter-tunnukselle.<\/p>\n<p>Kun k\u00e4yt\u00e4mme sosiaalista sis\u00e4\u00e4nkirjautumista, meid\u00e4n ei tarvitse tallentaa salasanoja, joten salasanasarakkeen tulisi hyv\u00e4ksy\u00e4 NULL-arvo oletuksena. Ei ole takeita k\u00e4ytt\u00e4j\u00e4n s\u00e4hk\u00f6postin saamisesta sosiaalisen kirjautumisen j\u00e4lkeen, joten uteliaisuuden vuoksi meid\u00e4n on my\u00f6s asetettava s\u00e4hk\u00f6postisarakkeet hyv\u00e4ksym\u00e4\u00e4n NULL-arvo.<\/p>\n<p>Avaa &#8217;k\u00e4ytt\u00e4j\u00e4n&#8217; taulukon siirtotiedosto ja lis\u00e4\u00e4 koodi alla.<\/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>Suorita t\u00e4m\u00e4n j\u00e4lkeen siirtokomento, joka luo taulukot tietokantaan.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Sinun on my\u00f6s lis\u00e4tt\u00e4v\u00e4 <code>provider<\/code>ja <code>provider_id<\/code>-sarakkeet k\u00e4ytt\u00e4j\u00e4malliin.<\/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>Hanki Twitter-kirjautumistiedot<\/h3>\n<p>Koska aiomme integroida Twitter-kirjautumisen Laraveliin, sinun on ensin hankittava Twitter-kirjautumistiedot. Luo Twitter-sovellus ja hanki kirjautumistiedot noudattamalla seuraavia ohjeita.<\/p>\n<ul>\n<li>Kirjaudu sis\u00e4\u00e4n <a href=\"https:\/\/dev.twitter.com\/apps\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Twitter-kehitt\u00e4j\u00e4tilille<\/a> ja luo uusi sovellus.<\/li>\n<li>T\u00e4yt\u00e4 kaikki vaaditut kent\u00e4t, kuten sovelluksen nimi ja kuvaus.<\/li>\n<li>Lis\u00e4\u00e4 verkkosivustosi verkkotunnus Sivusto-kentt\u00e4\u00e4n.<\/li>\n<li>Aseta takaisinsoiton URL-osoite <code>http:\/\/localhost:8000\/twitter\/callback<\/code>. S\u00e4\u00e4d\u00e4 URL-osoite vaatimuksesi mukaan.<\/li>\n<li>Kun olet rekister\u00f6itynyt, kopioi ja liit\u00e4 luotut sovellustiedot (Consumer Key and Secret), jotka vaativat jonkin aikaa.<\/li>\n<\/ul>\n<p>N\u00e4it\u00e4 kopioituja tunnistetietoja k\u00e4ytt\u00e4m\u00e4ll\u00e4 Laravel-sovelluksesi t\u00e4ydent\u00e4\u00e4 OAuth-kulkua, kun k\u00e4ytt\u00e4j\u00e4t kirjautuvat sis\u00e4\u00e4n Twitter-tilill\u00e4\u00e4n.<\/p>\n<h3>Luo reitit ja ohjain<\/h3>\n<p>Jotta voimme sis\u00e4llytt\u00e4\u00e4 Twitteriin kirjautumisen toiminnot, meid\u00e4n on lis\u00e4tt\u00e4v\u00e4 koodi Laravel-projektiimme. Luodaan <code>LoginController<\/code>komento:<\/p>\n<pre><code>php artisan make:controller LoginController<\/code><\/pre>\n<p>Meid\u00e4n on lis\u00e4tt\u00e4v\u00e4 sis\u00e4\u00e4nkirjautumislinkki ter\u00e4tiedostoon. Luo a <code>login.blade.php<\/code>ja lis\u00e4\u00e4 siihen seuraava 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>Voit kutsua t\u00e4t\u00e4 n\u00e4kym\u00e4\u00e4 <code>index<\/code>menetelm\u00e4st\u00e4 <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>Lis\u00e4\u00e4 seuraavaksi reitti sille. Lis\u00e4\u00e4n my\u00f6s muutama reitti, joita tarvitaan opetusohjelman seuraavaan osaan.<\/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>Kun k\u00e4ytt\u00e4j\u00e4 kirjautuu sis\u00e4\u00e4n Twitterill\u00e4, ohjaan heid\u00e4t <code>home<\/code>reitille. Se on vain demotarkoituksiin. Sinun pit\u00e4isi vaihtaa t\u00e4m\u00e4 reitti joksikin muuksi.<\/p>\n<h3>Kirjaudu sis\u00e4\u00e4n Twitterill\u00e4 Laravelissa<\/h3>\n<p>On aika k\u00e4ytt\u00e4\u00e4 Socialite-pakettia nyt. Alla olevan komennon avulla voit asentaa Socialite-paketin Laravel-projektiisi.<\/p>\n<pre><code>composer require laravel\/socialite<\/code><\/pre>\n<p>Kun Socialite on asennettu, meid\u00e4n on m\u00e4\u00e4ritett\u00e4v\u00e4 se. Avaa <code>config\/services.php<\/code>ja lis\u00e4\u00e4 Twitter-kokoonpano t\u00e4h\u00e4n tiedostoon seuraavasti:<\/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>Saatat huomata, ett\u00e4 k\u00e4ytin <code>env<\/code>menetelm\u00e4\u00e4 m\u00e4\u00e4ritettyjen arvojen saamiseen. Se tarkoittaa, ett\u00e4 meid\u00e4n on m\u00e4\u00e4ritelt\u00e4v\u00e4 n\u00e4m\u00e4 vakiot <code>.env<\/code>tiedostossa.<\/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>Muista korvata paikkamerkit todellisilla API-avaimilla. Seuraavaksi <code>LoginController<\/code>kirjoitamme toiminnon, joka ohjaa k\u00e4ytt\u00e4j\u00e4n Twitter-kirjautumissivulle, ja onnistuneen valtuutuksen yhteydess\u00e4 se kirjaa k\u00e4ytt\u00e4j\u00e4n sis\u00e4\u00e4n.<\/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>Siirry kirjautumissivulle ja napsauta Kirjaudu sis\u00e4\u00e4n Twitter-linkki\u00e4. Viimeistele prosessi ja kirjaudu j\u00e4rjestelm\u00e4\u00e4n Twitterill\u00e4. <code>users<\/code>Taulukosta saattaa l\u00f6yty\u00e4 my\u00f6s k\u00e4ytt\u00e4jien merkint\u00f6j\u00e4 .<\/p>\n<p>Toivon, ett\u00e4 saatat oppia kirjautumisesta Twitteriin Laravelissa Socialite-paketin avulla. Haluaisin kuulla ajatuksesi tai ehdotuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kirjaudu-sisaan-linkedinilla-laravelissa-laravel-socialiten-avulla\/\" title=\"Kirjaudu sis\u00e4\u00e4n LinkedInill\u00e4 Laravelissa Laravel Socialiten avulla\">Kirjaudu sis\u00e4\u00e4n LinkedInill\u00e4 Laravelissa Laravel Socialiten avulla<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/google-kirjautuminen-laravelissa-laravel-socialiten-avulla\/\" title=\"Google-kirjautuminen Laravelissa Laravel Socialiten avulla\">Google-kirjautuminen Laravelissa Laravel Socialiten avulla<\/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>T\u00e4ss\u00e4 opetusohjelmassa tutkitaan kirjautumista Twitterill\u00e4 Laravelissa Laravel Socialite -paketin avulla. Sosiaalinen sis\u00e4\u00e4nkirjautuminen auttaa sinua ohittamaan kokonaisuuden<\/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":[499],"tags":[843],"class_list":["post-25691","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25691","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=25691"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25691\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/20252"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=25691"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=25691"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=25691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}