{"id":26724,"date":"2021-04-27T14:09:00","date_gmt":"2021-04-27T11:09:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26724"},"modified":"2021-10-17T05:34:35","modified_gmt":"2021-10-17T02:34:35","slug":"socialt-inloggningssystem-med-laravel-socialite","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/socialt-inloggningssystem-med-laravel-socialite\/","title":{"rendered":"Socialt inloggningssystem med Laravel Socialite"},"content":{"rendered":"<p>Kredit: Den h\u00e4r artikeln \u00e4r inspirerad av detta inl\u00e4gg <a href=\"https:\/\/scotch.io\/tutorials\/laravel-social-authentication-with-socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Social Authentication with Socialite<\/a><\/p>\n<p>Vill du implementera socialt inloggningssystem p\u00e5 din Laravel-webbplats? Genom att till\u00e5ta social inloggning beh\u00f6ver dina anv\u00e4ndare inte registrera sig p\u00e5 din webbplats. Det sparar oss ocks\u00e5 mycket arbete som att skicka aktiveringsl\u00e4nk, verifierar e-postkonto. I den h\u00e4r artikeln studerar vi hur man l\u00e4gger till socialt inloggningssystem med Laravel socialite.<\/p>\n<p><a href=\"https:\/\/github.com\/laravel\/socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Socialite-<\/a> biblioteket tillhandah\u00e5ller OAuth-autentisering med Facebook, Twitter, Google, LinkedIn, GitHub och Bitbucket. Vad vi beh\u00f6ver g\u00f6ra \u00e4r att installera det h\u00e4r biblioteket p\u00e5 v\u00e5r Laravel-webbplats, konfigurera det, f\u00e5 API-nycklar fr\u00e5n en social webbplats och vi \u00e4r klara.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20876-60823669e70f3.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-20876-60823669e70f3.png\" alt=\"Socialt inloggningssystem med Laravel Socialite\" ><\/a><\/p>\n<h3>Skapa anv\u00e4ndartabell<\/h3>\n<p>F\u00f6r att implementera socialt inloggningssystem m\u00e5ste vi skapa en anv\u00e4ndartabell som lagrar informationen fr\u00e5n den sociala webbplatsen.<\/p>\n<p>Om du har en ny installation av en Laravel \u00f6ppnar du kommandoradsverktyget i ett projekts rotkatalog och k\u00f6r kommandot <code>php artisan make:auth<\/code>. Detta kommando skapar autentiseringsstyrenheter som LoginController, RegisterController, etc. som finns i katalogen app \/ Http \/ Controllers \/ Auth. Det skapar ocks\u00e5 en vyer login.blade.php, register.blade.php under katalogen resources \/ view \/ auth.<\/p>\n<p>\u00d6ppna sedan tabellen f\u00f6r migrering f\u00f6r anv\u00e4ndare. Vi kommer att \u00e4ndra denna standardmigrering och l\u00e4gga till ytterligare tv\u00e5 kolumner som heter provider och provider_id.<\/p>\n<pre><code>public 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;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>Som du ser st\u00e4ller vi in \u200b\u200be-post- och l\u00f6senordskolumner till ogiltiga. Varf\u00f6r? N\u00e4r vi anv\u00e4nder social inloggningsautentisering finns det ingen garanti f\u00f6r att f\u00e5 ett e-post-ID f\u00f6r en anv\u00e4ndare. Och l\u00f6senordet \u00e4r inte heller n\u00f6dv\u00e4ndigt i s\u00e5dana fall. S\u00e5 vi beh\u00e5ller e-post och l\u00f6senord till ogiltiga. Kolumnleverant\u00f6ren lagrar sociala webbplatsnamn som facebook, twitter etc. Kolumnleverant\u00f6r_id kommer att lagra det sociala id f\u00f6r en anv\u00e4ndare som motsvarar den sociala webbplatsen.<\/p>\n<p>N\u00e4r du har \u00e4ndrat din anv\u00e4ndarmigrering enligt ovan k\u00f6r du kommandot <code>php artisan migrate<\/code>. Det skapar en tabell som heter &#8217;anv\u00e4ndare&#8217; i din databas.<\/p>\n<p>F\u00f6rmodligen, n\u00e4r du k\u00f6r migreringskommandot kommer du att f\u00e5 n\u00e5gra konstiga fel relaterade till teckenl\u00e4ngd. Om s\u00e5 \u00e4r fallet \u00f6ppnar du filen AppServiceProvider.php fr\u00e5n appen \/ leverant\u00f6rskatalogen. I den h\u00e4r filen m\u00e5ste vi st\u00e4lla in standardstr\u00e4ngl\u00e4ngd f\u00f6r en databastabellkolumner.<\/p>\n<p>Fila AppServiceProvider.php<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppProviders;\n\u00a0\nuse IlluminateSupportServiceProvider;\nuse IlluminateSupportFacadesSchema;\n\u00a0\nclass AppServiceProvider extends ServiceProvider\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Bootstrap any application services.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function boot()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Schema::defaultStringLength(255);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Register any application services.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function register()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<h3>Anv\u00e4ndarmodell<\/h3>\n<p>Som standard inkluderar Laravel en AppUser Eloquent-modell i din appkatalog. \u00d6ppna User.php fr\u00e5n appmappen. L\u00e4gg till ytterligare tv\u00e5 kolumner, provider_id till variabeln $ fillable.<\/p>\n<pre><code>protected $fillable = [\n\u00a0\u00a0\u00a0\u00a0'name', 'email', 'password', 'provider', 'provider_id',\n];<\/code><\/pre>\n<h3>Installera och konfigurera Laravel Socialite<\/h3>\n<p>F\u00f6r att installera detta bibliotek b\u00f6r du ha <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">komposit\u00f6ren<\/a> installerad p\u00e5 ditt system.<\/p>\n<p>I kommandoradsverktyget k\u00f6r du kommandot nedan.<\/p>\n<p><code>composer require laravel\/socialite<\/code><\/p>\n<p>Efter att ha installerat biblioteket registrerar du LaravelSocialiteSocialiteServiceProvider i din konfigurationsfil config \/ app.php.<\/p>\n<pre><code>'providers' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\/\/ Other service providers...\n\u00a0\n\u00a0\u00a0\u00a0\u00a0LaravelSocialiteSocialiteServiceProvider::class,\n],<\/code><\/pre>\n<p>I samma fil config \/ app.php, under alias array, l\u00e4gg till Socialite facade.<\/p>\n<pre><code>'Socialite' =&gt; LaravelSocialiteFacadesSocialite::class,<\/code><\/pre>\n<p>Nu \u00e4r det dags att registrera din ans\u00f6kan p\u00e5 en social webbplats. Vi antar till exempel att du vill implementera Facebook-inloggningsautentisering. S\u00e5 forts\u00e4tt och <a href=\"https:\/\/developers.facebook.com\/docs\/apps\/register\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">skapa en applikation p\u00e5 Facebook<\/a>.<\/p>\n<p>En g\u00e5ng \u00e4r du redo med app-id, apphemlighet f\u00f6r din Facebook-applikation, \u00f6ppnar filen config \/ services.php och l\u00e4gger till koden nedan.<\/p>\n<pre><code>'facebook' =&gt; [\n\u00a0\u00a0\u00a0\u00a0'client_id' =&gt; env('FB_APP_ID'),\n\u00a0\u00a0\u00a0\u00a0'client_secret' =&gt; env('FB_APP_SECRET'),\n\u00a0\u00a0\u00a0\u00a0'redirect' =&gt; env('FB_CALLBACK_URL'),\n],<\/code><\/pre>\n<p>Som visas i ovanst\u00e5ende kod m\u00e5ste vi lagra v\u00e5r applikationsinformation och \u00e5teruppringnings-URL i .env-filen.<\/p>\n<pre><code>FB_APP_ID=PASTE_APP_ID_HERE\nFB_APP_SECRET=PASTE_APP_SECRET_HERE\nFB_CALLBACK_URL=YOU_SITE_URL\/login\/facebook\/callback<\/code><\/pre>\n<p>Vi har skickat \u00e5teruppringnings-URL som YOU_SITE_URL \/ inloggning \/ facebook \/ \u00e5teruppringning. Nu \u00e4r det dags att skapa tv\u00e5 rutter, en f\u00f6r att omdirigera anv\u00e4ndaren till OAuth (i v\u00e5rt fall Facebook) -leverant\u00f6r och en annan f\u00f6r att ta emot \u00e5teruppringning fr\u00e5n leverant\u00f6ren efter autentisering.<\/p>\n<h3>Faktisk kod f\u00f6r hantering av OAuth<\/h3>\n<p>I det h\u00e4r skedet \u00e4r vi klar med alla inst\u00e4llningar f\u00f6r Laravel Socialite. Det \u00e4r dags att skriva lite kod som hanterar omdirigering OAuth och h\u00e4mta anv\u00e4ndarinformation.<\/p>\n<p>\u00d6ppna din login.blade.php-fil och placera nedanst\u00e5ende kod i den troligen efter skicka-knappen.<\/p>\n<pre><code>&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-md-6 col-md-offset-4\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Login with\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;a href=\"{{ url('\/login\/facebook') }}\"&gt;&lt;i class=\"fa fa-facebook-official\" aria-hidden=\"true\"&gt;&lt;\/i&gt; Facebook&lt;\/a&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;a href=\"{{ url('\/login\/twitter') }}\"&gt;&lt;i class=\"fa fa-twitter\" aria-hidden=\"true\"&gt;&lt;\/i&gt; Twitter&lt;\/a&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;a href=\"{{ url('\/login\/github') }}\"&gt;&lt;i class=\"fa fa-github\" aria-hidden=\"true\"&gt;&lt;\/i&gt; Github&lt;\/a&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>H\u00e4r l\u00e4gger vi till en l\u00e4nk f\u00f6r Github och Twitter. Stegen f\u00f6r att l\u00e4gga till OAuth f\u00f6r dessa sociala webbplatser ocks\u00e5 samma som Facebook. Du beh\u00f6ver bara skapa en applikation p\u00e5 respektive sociala webbplatser och lagra dessa detaljer p\u00e5 samma s\u00e4tt som vi lade till f\u00f6r Facebook.<\/p>\n<p>Definiera rutterna i din ruttfil enligt nedan.<\/p>\n<pre><code>Route::get('login\/{provider}', 'AuthLoginController@redirectToProvider');\nRoute::get('login\/{provider}\/callback', 'AuthLoginController@handleProviderCallback');<\/code><\/pre>\n<p>Navigera sedan till app \/ Http \/ Controllers \/ Auth \/ LoginController.php och \u00e4ndra filen. Du b\u00f6r l\u00e4gga till koden nedan i den.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllersAuth;\n\u00a0\nuse AppHttpControllersController;\nuse IlluminateFoundationAuthAuthenticatesUsers;\nuse Socialite;\nuse AppUser;\nuse Auth;\n\u00a0\nclass LoginController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Redirect the user to the GitHub 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(['email'])-&gt;redirect();\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Obtain the user information from GitHub.\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\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>Metoden redirectToProvider omdirigerar anv\u00e4ndare till inloggningssidan p\u00e5 en social webbplats. N\u00e4r anv\u00e4ndaren har godk\u00e4nt applikationen h\u00e4mtar vi anv\u00e4ndarinformation i funktionshandtaget ProviderCallback. Om anv\u00e4ndaren inte finns med v\u00e5rt system l\u00e4gger vi till deras information med metoden findOrCreateUser.<\/p>\n<p>Vi hoppas att du fick veta om sociala inloggningssystem med Laravel Socialite. Om du har n\u00e5gra fr\u00e5gor eller f\u00f6rslag, v\u00e4nligen l\u00e4mna en kommentar nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-anvander-laravel-multiple-database-connections-funktionen-pa-en-webbplats\/\" title=\"Hur man anv\u00e4nder Laravel Multiple Database Connections-funktionen p\u00e5 en webbplats\">Hur man anv\u00e4nder Laravel Multiple Database Connections-funktionen p\u00e5 en webbplats<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/skapa-flersprakig-webbplats-i-php-med-hjalp-av-laravel-framework\/\" title=\"Skapa flerspr\u00e5kig webbplats i PHP med hj\u00e4lp av Laravel Framework\">Skapa flerspr\u00e5kig webbplats i PHP med hj\u00e4lp av Laravel Framework<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Om du vill l\u00e4gga till socialt inloggningssystem p\u00e5 din Laravel-webbplats \u00e4r Laravel Socialite ett bibliotek som hj\u00e4lper oss att installera detta system.<\/p>\n","protected":false},"author":1,"featured_media":21626,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[181,503],"tags":[850],"class_list":["post-26724","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sem-categoria-2","category-laravel2-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/26724","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=26724"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/26724\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21626"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=26724"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=26724"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=26724"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}