亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

Laravel是一種流行的PHP框架,用于開(kāi)發(fā)Web應(yīng)用程序。其中一個(gè)最常見(jiàn)的功能是在應(yīng)用程序中集成第三方登錄。這樣做可以為用戶(hù)提供更好的用戶(hù)體驗(yàn),減少注冊(cè)重復(fù)流程。

在本文中,我們將討論如何使用Laravel Socialite庫(kù)集成第三方登錄。

什么是Laravel Socialite?

Laravel Socialite是Laravel框架的一個(gè)擴(kuò)展包,它允許開(kāi)發(fā)人員在應(yīng)用程序中輕松實(shí)現(xiàn)第三方登錄。它支持各種社交平臺(tái),如Facebook,Twitter,LinkedIn等。

Socialite如何工作?

Socialite遵循OAuth協(xié)議。 OAuth是一種授權(quán)框架,它允許用戶(hù)將其帳戶(hù)信息從一個(gè)站點(diǎn)傳遞到另一個(gè)站點(diǎn),而無(wú)需共享其憑據(jù)。 OAuth需要用戶(hù)授權(quán),在這種情況下,用戶(hù)將授權(quán)應(yīng)用程序訪問(wèn)其社交媒體帳戶(hù)。

Socialite授權(quán)工作原理如下:

    用戶(hù)單擊“登錄”按鈕,該按鈕將指向Socialite授權(quán):

    Route::get('auth/{provider}', 'AuthSocialController@redirectToProvider');

    登錄后復(fù)制

    Socialite挑戰(zhàn)用戶(hù)以授權(quán)訪問(wèn)其社交媒體帳戶(hù); Socialite將重定向到社交媒體站點(diǎn);

    Route::get('auth/{provider}/callback', 'AuthSocialController@handleProviderCallback');

    登錄后復(fù)制

3.用戶(hù)授權(quán)自己的帳戶(hù),社交媒體網(wǎng)站重定向到回調(diào)URL;

public function redirectToProvider($provider)
{
  return Socialite::driver($provider)->redirect();
}

登錄后復(fù)制

    Socialite將帶有授權(quán)代碼的回調(diào)URL返回應(yīng)用程序,應(yīng)用程序?qū)⒂檬跈?quán)代碼請(qǐng)求OAuth訪問(wèn)令牌;

    public function handleProviderCallback($provider)
    {
    $socialUser = Socialite::driver($provider)->user();
    }

    登錄后復(fù)制完成認(rèn)證,Socialite將返回用戶(hù)授權(quán)的令牌,并將其傳遞到應(yīng)用程序中。

如何在Laravel中使用Socialite?

使用Socialite支持的任何社交媒體平臺(tái),您需要在以下兩個(gè)地方設(shè)置應(yīng)用程序憑據(jù)或密鑰:

    'facebook' => [
        'client_id' => env('FB_CLIENT_ID'),
        'client_secret' => env('FB_CLIENT_SECRET'),
        'redirect' => env('FB_CALLBACK_URL'),
    ]

    'twitter' => [
        'client_id' => env('TW_CLIENT_ID'),
        'client_secret' => env('TW_CLIENT_SECRET'),
        'redirect' => env('TW_CALLBACK_URL'),
    ],

    'google' => [
         'client_id' => env('GOOGLE_CLIENT_ID'),
         'client_secret' => env('GOOGLE_CLIENT_SECRET'),
         'redirect' => env('GOOGLE_CALLBACK_URL')
    ]

登錄后復(fù)制

應(yīng)用程序憑據(jù)或密鑰旨在驗(yàn)證應(yīng)用程序的身份。

我們將在config / services.php文件中進(jìn)行此設(shè)置。

步驟1:創(chuàng)建授權(quán)路由

創(chuàng)建用于觸發(fā)Socialite授權(quán)的路由:

Route::get('auth/{provider}', 'AuthSocialController@redirectToProvider');
Route::get('auth/{provider}/callback', 'AuthSocialController@handleProviderCallback');

登錄后復(fù)制

通常將這些路由放置在一個(gè)名為SocialController的控制器中,該控制器用于處理Socialite授權(quán)和回調(diào)。

步驟2:創(chuàng)建SocialController

像所有控制器一樣,我們需要?jiǎng)?chuàng)建使用良好的代碼實(shí)踐的SocialController。

使用以下命令來(lái)創(chuàng)建控制器:

php artisan make:controller AuthSocialController

登錄后復(fù)制

最終,這將使我們可以使用授權(quán)提供程序進(jìn)行授權(quán)并回調(diào)我們的路由。

在SocialController中,我們定義了兩個(gè)方法,redirectToProvider和handleProviderCallback。 第一個(gè)是重定向至授權(quán)提供程序。 隨后的回調(diào)函數(shù)則為具有授權(quán)代碼的客戶(hù)端檢索信息并完成身份驗(yàn)證的客戶(hù)端提供回調(diào)URL。

以下是SocialController的示例代碼:

namespace AppHttpControllersAuth;
use AppHttpControllersController;
use IlluminateSupportFacadesAuth;
use IlluminateHttpRequest;
use LaravelSocialiteFacadesSocialite;

class SocialController extends Controller
{
    /**
     * Redirect the user to the OAuth Provider.
     *
     * @return IlluminateHttpResponse
     */
    public function redirectToProvider($provider)
    {
        return Socialite::driver($provider)->redirect();
    }
    /**
     * Obtain the user information from OAuth Provider.
     *
     * @return IlluminateHttpResponse
     */
    public function handleProviderCallback($provider)
    {
        $user = Socialite::driver($provider)->user();

        // Do something with user data, for example:
        // $user->token;
        // $user->getId();
        // $user->getEmail();
    }
}

登錄后復(fù)制

步驟3:使用視圖控制器

通常,我們會(huì)使用視圖控制器來(lái)管理渲染我們的所有視圖。 這使我們的代碼更易于閱讀和管理。 讓我們使用Laravel的視圖控制器為我們的應(yīng)用程序創(chuàng)建一個(gè)簡(jiǎn)單的視圖。

使用以下命令來(lái)創(chuàng)建視圖控制器:

php artisan make:controller SocialAuthController

登錄后復(fù)制

以下是在該控制器中所做的更改。

namespace AppHttpControllers;

use IlluminateHttpRequest;

class SocialAuthController extends Controller
{
    /**
     * Redirect the user to the OAuth Provider.
     *
     * @return IlluminateHttpResponse
     */
    public function redirectToProvider($provider)
    {
        return Socialite::driver($provider)->redirect();
    }

    /**
     * Obtain the user information from OAuth Provider.
     *
     * @return IlluminateHttpResponse
     */
    public function handleProviderCallback($provider)
    {
        $user = Socialite::driver($provider)->user();
        $existingUser = User::where('email', $user->getEmail())->first();
        if ($existingUser) { // If user already exists, login the user                
            auth()->login($existingUser, true);
        } else { // Register new user                    
            $newUser = new User();
            $newUser->name = $user->getName();
            $newUser->email = $user->getEmail();
            $newUser->google_id = $user->getId();
            $newUser->password = encrypt('amitthakur');
            $newUser->save();
            auth()->login($newUser, true);
        }
        return redirect()->to('/home');
    }
}

登錄后復(fù)制

步驟4:創(chuàng)建登錄視圖

現(xiàn)在我們的控制器和路由都已準(zhǔn)備就緒。 現(xiàn)在我們需要?jiǎng)?chuàng)建用于登錄的視圖。

創(chuàng)建一個(gè)視圖文件并將其命名為social_login.blade.php。 我們需要顯示可以觸發(fā)第三方登錄的按鈕。 在這種情況下,我們將展示3個(gè)按鈕,以支持Google,F(xiàn)acebook和Twitter的登錄。

以下是視圖文件的示例代碼:

@extends('layouts.app')
@section('content')
<main class="py-4">
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header">{{ __('Login') }}</div>
                    <div class="card-body">
                        <a href="{{ route('social.oauth', ['provider' => 'google']) }}" class="btn btn-google">Sign in with google</a>
                        <a href="{{ route('social.oauth', ['provider' => 'facebook']) }}" class="btn btn-facebook">Sign in with Facebook</a>
                        <a href="{{ route('social.oauth', ['provider' => 'twitter']) }}" class="btn btn-twitter">Sign in with twitter</a>
                    </div>
                </div>
            </div>
        </div>
    </div>
</main>
@endsection

登錄后復(fù)制

頂部使用布局文件。當(dāng)用戶(hù)單擊任何按鈕時(shí),我們將它們重定向到授權(quán)提供程序。 在SocialController respond中,我們將獲得用戶(hù)數(shù)據(jù)并完成身份驗(yàn)證。

步驟5:創(chuàng)建新路由

現(xiàn)在我們需要?jiǎng)?chuàng)建新路由以處理上面的視圖文件。

修改web.php文件,如下所示:

Route::get('social', 'SocialAuthController@index')->name('social.login');
Route::get('social/{provider}', 'SocialAuthController@redirectToProvider')->name('social.oauth');
Route::get('social/{provider}/callback', 'SocialAuthController@handleProviderCallback');

登錄后復(fù)制

我們應(yīng)該注意,上面的路由通過(guò)名稱(chēng)進(jìn)行標(biāo)識(shí),以便可以在控制器代碼中引用它們。

步驟6:測(cè)試

現(xiàn)在我們已經(jīng)設(shè)置了我們的社交媒體標(biāo)識(shí),在測(cè)試應(yīng)用程序之前,我們需要通過(guò).env文件對(duì)我們的應(yīng)用程序進(jìn)行配置。

要配置.env文件,請(qǐng)?zhí)砑右韵麓a:

FACEBOOK_CLIENT_ID=xxxxxxxxxxxxxxxxx
FACEBOOK_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxx
FACEBOOK_CALLBACK_URL=http://www.example.com/auth/facebook/callback

GOOGLE_CLIENT_ID=xxxxxxxxxxxxxxxxx
GOOGLE_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxx
GOOGLE_CALLBACK_URL=http://www.example.com/auth/google/callback

TWITTER_CLIENT_ID=xxxxxxxxxxxxxxxxx
TWITTER_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxx
TWITTER_CALLBACK_URL=http://www.example.com/auth/twitter/callback

登錄后復(fù)制

該行中用“xxxxxxxxxxxxxxxxx”替換實(shí)際的應(yīng)用程序標(biāo)識(shí)。 之后,我們可以通過(guò)命令行啟動(dòng)我們的應(yīng)用程序,并訪問(wèn)上面的視圖文件。 一旦我們單擊任何按鈕并通過(guò)OAuth授權(quán)我們的帳戶(hù),我們將以已知的每個(gè)用戶(hù)進(jìn)行身份驗(yàn)證。

結(jié)論

在本文中,我們學(xué)習(xí)了如何使用Laravel Socialite庫(kù)集成第三方登錄。 Socialite的主要目的是簡(jiǎn)化社交媒體登錄流程,以提高用戶(hù)體驗(yàn)。 我們學(xué)習(xí)了如何設(shè)置Socialite以支持Google,F(xiàn)acebook和Twitter。 我們還在控制器中檢索授權(quán)代碼,并使用請(qǐng)求的數(shù)據(jù)完成OAuth身份驗(yàn)證。 該過(guò)程實(shí)際上將創(chuàng)建新帳戶(hù)或更新現(xiàn)有帳戶(hù)。

以上就是Laravel開(kāi)發(fā):如何使用Laravel Socialite快速集成第三方登錄?的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.xfxf.net其它相關(guān)文章!

分享到:
標(biāo)簽:laravel Socialite 第三方登錄
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定