{"id":29466,"date":"2021-06-12T16:42:00","date_gmt":"2021-06-12T13:42:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29466"},"modified":"2021-10-17T04:17:41","modified_gmt":"2021-10-17T01:17:41","slug":"google-inloggning-i-laravel-med-laravel-socialite","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/google-inloggning-i-laravel-med-laravel-socialite\/","title":{"rendered":"Google-inloggning i Laravel med Laravel Socialite"},"content":{"rendered":"<p>Nyligen har jag publicerat en artikel <a href=\"https:\/\/themewp.inform.click\/sv\/logga-in-med-linkedin-i-laravel-med-laravel-socialite\/\" title=\"Login with LinkedIn Using Laravel Socialite\" >Login with LinkedIn Using Laravel Socialite<\/a> och en av v\u00e5ra l\u00e4sare fr\u00e5gade om att integrera Google Login i Laravel. Google-inloggning \u00e4r ocks\u00e5 en av de popul\u00e4ra plattformarna som anv\u00e4nds f\u00f6r social inloggning p\u00e5 webbplatsen.<\/p>\n<p>N\u00e4r du till\u00e5ter anv\u00e4ndare att logga in med sin sociala profil p\u00e5 din webbplats hoppar du \u00f6ver processen f\u00f6r att validera deras e-post. Dina anv\u00e4ndare beh\u00f6ver inte f\u00f6lja en e-postaktivering. Vi kan lita p\u00e5 sociala webbplatser eftersom de redan validerat anv\u00e4ndare p\u00e5 sin plattform. Det ger en b\u00e4ttre anv\u00e4ndarupplevelse f\u00f6r dina anv\u00e4ndare eftersom de inte beh\u00f6ver komma ih\u00e5g sina inloggningsuppgifter f\u00f6r din webbplats och sparar dig ocks\u00e5 fr\u00e5n att l\u00e4gga till koder f\u00f6r verifieringsfl\u00f6de. Det \u00e4r en vinn-vinn-situation.<\/p>\n<p>I den h\u00e4r artikeln studerar vi steg f\u00f6r steg guide om hur du l\u00e4gger till Google-inloggning i Laravel med Laravel Socialite. Laravel socialite hanterar OAuth-fl\u00f6de f\u00f6r social inloggning bakom kulisserna. Detta paket p\u00e5skyndar processen f\u00f6r att integrera social inloggning p\u00e5 Laravel.<\/p>\n<p>F\u00f6r den h\u00e4r handledningen anv\u00e4nder jag en ny Laravel-installation s\u00e5 k\u00f6r nedanst\u00e5ende kommando som kommer att installera Laravel \u00e5t dig:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel googlelogin<\/code><\/pre>\n<p>Vid Laravel-installationen skapar du en databas och l\u00e4gger till dina databasuppgifter i <code>.env<\/code>filen. N\u00e4r vi l\u00e4gger till social inloggning i applikationen l\u00e4gger jag till ytterligare tv\u00e5 kolumner i standardmigrationsfilen f\u00f6r anv\u00e4ndaren och \u00e4ndrade dess kod lite.<\/p>\n<p>\u00d6ppna din anv\u00e4ndares migreringsfil och l\u00e4gg till koden nedan till <code>up<\/code>metoden.<\/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;bigIncrements('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>I koden ovan har jag lagt till tv\u00e5 kolumner <code>provider<\/code>och <code>provider_id<\/code>som kommer att inneh\u00e5lla v\u00e4rdena &#8217;google&#8217; och anv\u00e4ndarens Google-profil-id. Skapa tabellen &quot;anv\u00e4ndare&quot; genom att k\u00f6ra kommandot migrera.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Du m\u00e5ste ocks\u00e5 l\u00e4gga till dessa tv\u00e5 kolumner i anv\u00e4ndarmodellen.<\/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>Skapa Google-applikation och f\u00e5 dina uppgifter<\/h3>\n<p>D\u00e4refter m\u00e5ste vi skapa ett projekt p\u00e5 Googles API-konsol. Vi kommer att kr\u00e4va klient-id och klienthemlighet f\u00f6r applikationen f\u00f6r att slutf\u00f6ra OAuth-processen f\u00f6r anv\u00e4ndarna.<\/p>\n<p>F\u00f6lj stegen nedan f\u00f6r att skapa ett Google-projekt och f\u00e5 uppgifterna. F\u00f6r handledningens skull anv\u00e4nder jag den lokala serverns URL. Du kan justera den h\u00e4r webbadressen enligt dina krav.<\/p>\n<ul>\n<li>G\u00e5 till <a href=\"https:\/\/console.developers.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Googles utvecklarkonsol<\/a>.<\/li>\n<li>Klicka p\u00e5 rullgardinsmenyn och skapa ett nytt projekt genom att klicka p\u00e5 (+) -tecknet. Alternativt kan du ocks\u00e5 v\u00e4lja det befintliga projektet.<\/li>\n<li>V\u00e4lj inloggningsuppgifter fr\u00e5n sidof\u00e4ltet p\u00e5 projektets instrumentpanel.<\/li>\n<li>Under fliken Referenser klickar du p\u00e5 rullgardinsmenyn Skapa referenser och v\u00e4ljer OAuth-klient-ID.<\/li>\n<li>V\u00e4lj webbapplikationen fr\u00e5n applikationstypen. Ange webbadressen i de auktoriserade omdirigeringsadresserna <code>http:\/\/localhost:8000\/google\/callback<\/code>.<\/li>\n<\/ul>\n<p>N\u00e4r du har sparat den f\u00e5r du popup-f\u00f6nstret tillsammans med ditt klient-ID och klienthemlighet. Kopiera dessa nycklar som vi kommer att beh\u00f6va p\u00e5 n\u00e5gra \u00f6gonblick.<\/p>\n<h3>Skapa rutter och kontroller<\/h3>\n<p>Du \u00e4r redo med dina API-nycklar. F\u00f6r att g\u00e5 vidare m\u00e5ste vi skapa rutter, bladfil och styrenhet. Skapa ett <code>LoginController<\/code>med kommandot:<\/p>\n<pre><code>php artisan make:controller LoginController<\/code><\/pre>\n<p>Skapa sedan en bladfil som heter <code>login.blade.php<\/code>och l\u00e4gg till nedanst\u00e5ende HTML i den.<\/p>\n<pre><code>&lt;a href=\"{{ url('\/login\/google') }}\"&gt;\n\u00a0\u00a0\u00a0\u00a0{{ __('Login with Google') }}\n&lt;\/a&gt;<\/code><\/pre>\n<p>Kalla denna vy fr\u00e5n <code>index<\/code>metoden f\u00f6r <code>LoginController<\/code>.<\/p>\n<pre><code>public function index()\n{\n\u00a0\u00a0\u00a0\u00a0return view('login');\n}<\/code><\/pre>\n<p>F\u00f6r att ringa den h\u00e4r vyn m\u00e5ste du l\u00e4gga till en rutt f\u00f6r den. L\u00e5t oss l\u00e4gga till n\u00e5gra fler rutter ocks\u00e5 som kommer att kr\u00e4vas f\u00f6r n\u00e4sta del av handledningen.<\/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>L\u00e4gg m\u00e4rke till att jag lade till en <code>home<\/code>rutt. N\u00e4r en anv\u00e4ndare loggar in p\u00e5 Google kommer jag att omdirigera dem till <code>home<\/code>rutten. Jag h\u00e5ller det bara f\u00f6r demo\u00e4ndam\u00e5l. Du b\u00f6r \u00e4ndra denna rutt till n\u00e5got annat.<\/p>\n<h3>Google-inloggning i Laravel med Laravel Socialite<\/h3>\n<p>Hittills \u00e4r vi klara med den grundl\u00e4ggande installation som kr\u00e4vs f\u00f6r social inloggning. Nu. det \u00e4r dags att installera <a href=\"https:\/\/laravel.com\/docs\/master\/socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Socialite-<\/a> biblioteket. Installera det genom att k\u00f6ra kommandot nedan i terminalen.<\/p>\n<pre><code>composer require laravel\/socialite<\/code><\/pre>\n<p>Vid installation av biblioteket, \u00f6ppna <code>config\/services.php<\/code>och l\u00e4gg till Google-konfiguration enligt f\u00f6ljande:<\/p>\n<pre><code>'google' =&gt; [\n\u00a0\u00a0\u00a0\u00a0'client_id'\u00a0\u00a0\u00a0\u00a0 =&gt; env('GOOGLE_CLIENT_ID'),\n\u00a0\u00a0\u00a0\u00a0'client_secret' =&gt; env('GOOGLE_CLIENT_SECRET'),\n\u00a0\u00a0\u00a0\u00a0'redirect'\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; env('GOOGLE_REDIRECT_URL'),\n],<\/code><\/pre>\n<p>N\u00e4r vi anv\u00e4nde <code>env<\/code>metoden f\u00f6r att f\u00e5 autentiseringsuppgifter m\u00e5ste vi l\u00e4gga till dessa autentiseringsuppgifter i <code>.env<\/code>filen.<\/p>\n<pre><code>GOOGLE_CLIENT_ID=YOUR_CLIENT_ID\nGOOGLE_CLIENT_SECRET=YOUR_CLIENT_SECRET\nGOOGLE_REDIRECT_URL=http:\/\/localhost:8000\/google\/callback<\/code><\/pre>\n<p>Se till att ers\u00e4tta platsh\u00e5llarna med faktiska v\u00e4rden. Slutligen m\u00e5ste vi l\u00e4gga till kod i <code>LoginController.php<\/code>fil som omdirigerar anv\u00e4ndare till Googles inloggningssida och i geng\u00e4ld hanterar svaret. I den h\u00e4r filen skriver vi en funktion som omdirigerar en anv\u00e4ndare till Googles inloggningssida och efter lyckad auktorisering kommer den att infoga anv\u00e4ndardetaljer i databasen och logga in anv\u00e4ndaren.<\/p>\n<p><strong>LoginController.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\u00a0\nnamespace AppHttpControllers;\n\u00a0\u00a0\nuse IlluminateHttpRequest;\nuse Socialite;\nuse AppModelsUser;\nuse Auth;\n\u00a0\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 Google 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 Google.\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>I v\u00e5r kontrollfil kontrollerar vi om anv\u00e4ndaren med <code>provider_id<\/code>redan finns eller inte. Om den existerar ska du returnera den aktuella anv\u00e4ndarinstansen annars infoga den i tabellen anv\u00e4ndare och logga in anv\u00e4ndaren.<\/p>\n<p>Jag hoppas att du fick veta om Google-inloggning i Laravel med hj\u00e4lp av Socialite-paketet. Jag skulle vilja h\u00f6ra dina tankar och f\u00f6rslag i kommentarsektionen nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/logga-in-med-linkedin-i-laravel-med-laravel-socialite\/\" title=\"Logga in med LinkedIn i Laravel med Laravel Socialite\">Logga in med LinkedIn i Laravel med Laravel Socialite<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/logga-in-med-twitter-i-laravel-med-laravel-socialite\/\" title=\"Logga in med Twitter i Laravel med Laravel Socialite\">Logga in med Twitter i Laravel med Laravel Socialite<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-lagger-till-google-oauth-inloggning-pa-webbplatsen-med-php\/\" title=\"Hur man l\u00e4gger till Google OAuth-inloggning p\u00e5 webbplatsen med PHP\">Hur man l\u00e4gger till Google OAuth-inloggning p\u00e5 webbplatsen med PHP<\/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>I den h\u00e4r artikeln studerar vi Google-inloggning i Laravel med Laravel Socialite. Anv\u00e4ndning av social inloggning ger slutanv\u00e4ndaren en b\u00e4ttre anv\u00e4ndarupplevelse<\/p>\n","protected":false},"author":1,"featured_media":20248,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[503],"tags":[850],"class_list":["post-29466","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29466","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=29466"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29466\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/20248"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=29466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=29466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=29466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}