ホームページ PHPフレームワーク Laravel Laravel 開発: Laravel Socialite を使用してサードパーティのログインを迅速に統合するにはどうすればよいですか?

Laravel 開発: Laravel Socialite を使用してサードパーティのログインを迅速に統合するにはどうすればよいですか?

Jun 13, 2023 pm 10:09 PM
laravel サインインするには socialite

Laravel は、Web アプリケーションの開発に使用される人気のある PHP フレームワークです。最も一般的な機能の 1 つは、サードパーティのログインをアプリケーションに統合することです。そうすることで、ユーザー エクスペリエンスが向上し、反復的な登録プロセスが削減されます。

この記事では、Laravel Socialite ライブラリを使用してサードパーティのログインを統合する方法について説明します。

Laravel ソーシャライトとは何ですか?

Laravel Socialite は、開発者がアプリケーションにサードパーティのログインを簡単に実装できるようにする Laravel フレームワークの拡張パッケージです。 Facebook、Twitter、LinkedInなどのさまざまなソーシャルプラットフォームをサポートしています。

Socialite はどのように機能しますか?

Socialite は OAuth プロトコルに従います。 OAuth は、ユーザーが資格情報を共有せずにアカウント情報をあるサイトから別のサイトに渡すことを可能にする承認フレームワークです。 OAuth にはユーザーの承認が必要です。この場合、ユーザーはアプリケーションがソーシャル メディア アカウントにアクセスすることを承認します。

Socialite 認証は次のように機能します:

  1. ユーザーが「ログイン」ボタンをクリックすると、Socialite 認証がポイントされます:

    Route::get('auth/{provider}', 'AuthSocialController@redirectToProvider');
  2. Socialite はユーザーに自分のソーシャル メディア アカウントへのアクセスを承認するように要求します。Socialite はソーシャル メディア サイトにリダイレクトします。

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

3. ユーザーは自分のアカウントとソーシャル メディア サイトを承認します。コールバック URL にリダイレクトします;

public function redirectToProvider($provider)
{
  return Socialite::driver($provider)->redirect();
}
  1. Socialite は認可コードを含むコールバック URL をアプリケーションに返し、アプリケーションは認可コードを含む OAuth アクセス トークンを要求します;

    public function handleProviderCallback($provider)
    {
    $socialUser = Socialite::driver($provider)->user();
    }
  2. 認証が完了すると、Socialite はユーザーの承認されたトークンを返し、それをアプリケーションに渡します。

Laravel で Socialite を使用するにはどうすればよいですか?

Socialite がサポートするソーシャル メディア プラットフォームを使用する場合は、アプリケーションの資格情報またはキーを 2 つの場所に設定する必要があります。

    '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')
    ]

アプリケーションの資格情報またはキーは、アプリケーションの ID を認証することを目的としています。

これを config/services.php ファイルで設定します。

ステップ 1: 承認ルートの作成

Socialite 承認をトリガーするために使用するルートを作成します:

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

通常、これらのルートは SocialController というコントローラーに配置されます。 Socialite の認証とコールバックを処理します。

ステップ 2: SocialController を作成する

すべてのコントローラーと同様に、適切なコーディング方法を使用して SocialController を作成する必要があります。

次のコマンドを使用してコントローラーを作成します。

php artisan make:controller AuthSocialController

これにより、最終的には、ルートへの承認とコールバックに承認プロバイダーを使用できるようになります。

SocialController では、redirectToProvider と handleProviderCallback という 2 つのメソッドを定義します。 1 つ目は、認可プロバイダーへのリダイレクトです。後続のコールバック関数は、情報を取得して認証を完了するための認証コードを含むコールバック 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();
    }
}

ステップ 3: ビュー コントローラーの使用

通常、ビュー コントローラーを使用してすべてのレンダリングを管理します。ビュー。これにより、コードが読みやすく、管理しやすくなります。 Laravel のビュー コントローラーを使用して、アプリケーションの簡単なビューを作成しましょう。

次のコマンドを使用してビュー コントローラーを作成します:

php artisan make:controller SocialAuthController

以下はコントローラーで行われた変更です。

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');
    }
}

ステップ 4: ログイン ビューの作成

これで、コントローラーとルーティングの準備が整いました。次に、ログイン用のビューを作成する必要があります。

ビュー ファイルを作成し、social_login.blade.php という名前を付けます。サードパーティのログインをトリガーできるボタンを表示する必要があります。この場合、Google、Facebook、Twitter でのログインをサポートする 3 つのボタンが表示されます。

次に、ビュー ファイルのサンプル コードを示します。

@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

上部のレイアウト ファイルを使用します。ユーザーがいずれかのボタンをクリックすると、認可プロバイダーにリダイレクトされます。 SocialController の応答でユーザー データを取得し、認証を完了します。

ステップ 5: 新しいルートを作成する

次に、上記のビュー ファイルを処理するための新しいルートを作成する必要があります。

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');

上記のルートは、コントローラー コードで参照できるように名前で識別されることに注意してください。

ステップ 6: テスト

ソーシャル メディア ID が設定されたので、アプリケーションをテストする前に、.env ファイルを使用してアプリケーションを構成する必要があります。

.env ファイルを構成するには、次のコードを追加します。

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

この行の実際のアプリケーション ID を「xxxxxxxxxxxxxxxxxxxx」に置き換えます。その後、コマンド ラインからアプリケーションを起動し、上記のビュー ファイルにアクセスできます。いずれかのボタンをクリックし、OAuth 経由でアカウントを認証すると、既知のすべてのユーザーで認証されます。

結論

この記事では、Laravel Socialite ライブラリを使用してサードパーティのログインを統合する方法を学びました。 Socialite の主な目的は、ソーシャル メディアのログイン プロセスを簡素化し、ユーザー エクスペリエンスを向上させることです。 Google、Facebook、Twitter をサポートするために Socialite をセットアップする方法を学びました。また、コントローラー内の認証コードを取得し、要求されたデータを使用して OAuth 認証を完了します。このプロセスでは、実際には新しいアカウントが作成されるか、既存のアカウントが更新されます。

以上がLaravel 開発: Laravel Socialite を使用してサードパーティのログインを迅速に統合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPコンテナを自動構造をサポートする方法は? PHP環境の継続的に統合されたCI構成方法 PHPコンテナを自動構造をサポートする方法は? PHP環境の継続的に統合されたCI構成方法 Jul 25, 2025 pm 08:54 PM

PHPコンテナが自動構造をサポートできるようにするために、コアは連続統合(CI)プロセスの構成にあります。 1. DockerFileを使用して、基本的な画像、拡張インストール、依存関係管理、許可設定など、PHP環境を定義します。 2. GitlabciなどのCI/CDツールを構成し、.gitlab-ci.ymlファイルを介してビルド、テスト、展開段階を定義して、自動構造、テスト、展開を実現します。 3. phpunitなどのテストフレームワークを統合して、コードの変更後にテストが自動的に実行されることを確認します。 4. Kubernetesなどの自動展開戦略を使用して、deployment.yamlファイルを介して展開構成を定義します。 5. DockerFileを最適化し、マルチステージ構造を採用します

Laravelの構成キャッシュとは何ですか? Laravelの構成キャッシュとは何ですか? Jul 27, 2025 am 03:54 AM

Laravelの構成キャッシュは、すべての構成ファイルを単一のキャッシュファイルにマージすることにより、パフォーマンスを向上させます。生産環境で構成キャッシュを有効にすると、各リクエストでI/O操作を削減し、ファイルの解析を行うと、構成の読み込みが高速化されます。 1.アプリケーションが展開され、構成が安定しており、頻繁な変更は必要ありません。 2。構成を有効にして変更した後、phpartisanconfigを再実行する必要があります:キャッシュを有効にします。 3.構成ファイルのランタイム条件に依存する動的ロジックまたはクロージャーを使用しないでください。 4.トラブルシューティングの問題の場合、まずキャッシュをクリアし、.ENV変数を確認して、再キャッシュする必要があります。

Laravel Eloquent Scopesを説明してください。 Laravel Eloquent Scopesを説明してください。 Jul 26, 2025 am 07:22 AM

LaravelのEloquentsCopesは、ローカルスコープとグローバルスコープに分割された一般的なクエリロジックをカプセル化するツールです。 1.ローカルスコープは、範囲から始まるメソッドで定義されており、post :: published()など、明示的に呼び出される必要があります。 2.グローバルスコープは、ソフト削除またはマルチテナントシステムによく使用されるすべてのクエリに自動的に適用され、スコープインターフェイスをモデルに実装および登録する必要があります。 3.スコープには、年または月ごとに記事をフィルタリングするなどのパラメーターを装備でき、呼び出し時に対応するパラメーターが渡されます。 4.コードの明確さと再利用性を改善するために使用する場合、命名仕様、チェーンコール、一時的な無効化、および組み合わせの拡張に注意してください。

Laravelでヘルパーファイルを作成する方法は? Laravelでヘルパーファイルを作成する方法は? Jul 26, 2025 am 08:58 AM

createahelpers.phpfileinapp/helperswithcustomfunctionslikeformatprice、isactiveroute、andisadmin.2.addthefiletothe "files" sectionofcomposer.jsonunderautoload.3.3.runcomposerdump-autoloadtomadtomakeTomeTheEfunctionSglunctionSglovalliableableableableableableableableableableableableabuntion

Laravelテストでオブジェクトをock笑する方法は? Laravelテストでオブジェクトをock笑する方法は? Jul 27, 2025 am 03:13 AM

usemockeryforcustomdependenciesbysettingtintingations withshouldreceive()。2。uselaravel’sfake()methodforfacadeslikemail、queue、andhttptopreventreal interactions.3.replacecontainer-boundserviceswith

Laravelで紹介システムを実装する方法は? Laravelで紹介システムを実装する方法は? Aug 02, 2025 am 06:55 AM

紹介テーブルを作成して、紹介、紹介、推奨コード、使用時間を含む推奨関係を記録します。 2.推奨データを管理するために、ユーザーモデルのBelongStomanyとHasmanyの関係を定義します。 3.登録時に一意の推奨コードを生成します(モデルイベントを通じて実装できます)。 4.登録中にパラメーターをクエリすることにより、推奨コードをキャプチャし、検証後に推奨関係を確立し、自己称賛を防ぎます。 5.推奨されるユーザーが指定された動作(サブスクリプション順序)を完了した場合、報酬メカニズムをトリガーします。 6.共有可能な推奨リンクを生成し、Laravel Signature URLを使用してセキュリティを強化します。 7.推奨事項の総数や変換された番号など、ダッシュボードに推奨統計を表示します。データベースの制約、セッション、またはCookieが持続することを確認する必要があります。

Laravelプロジェクトを実行する方法は? Laravelプロジェクトを実行する方法は? Jul 28, 2025 am 04:28 AM

CheckPhp> = 8.1、Composer、およびWebserver; 2.CloneOrCreateProjectAndRunComposErinStall; 3.Copy.Env.Exampleto.ENVANDRUNPHPARTISANKEY :generate; 4.setDatabaseCredentialSin.EnvandrunphpartisanMigrate-- Seed; 5.StartServerWithPhpartisEnserve; 6.optionallyrunnpmins

Laravelでデータベースをシードする方法は? Laravelでデータベースをシードする方法は? Jul 28, 2025 am 04:23 AM

シーダーファイルの作成:phpartisanmake:seederuserseederを使用してシーダークラスを生成し、実行方法のモデルファクトリーまたはデータベースクエリを介してデータを挿入します。 2。Databaseseederで他のシーダーを呼び出す:sulderseeder、Postseederなどを登録$ this-> call()を介して依存関係が正しいことを確認します。 3。シーダーの実行:PHPARTISANDBを実行する:種子をすべて登録したすべてのシーダーを実行するか、PHPARTISANMIGRATE:FRESS-シードを使用してデータをリセットして補充します。 4

See all articles