ホームページ  >  記事  >  PHPフレームワーク  >  Laravelを使用してサードパーティログイン機能を実装する方法

Laravelを使用してサードパーティログイン機能を実装する方法

王林
王林オリジナル
2023-11-02 11:01:111235ブラウズ

Laravelを使用してサードパーティログイン機能を実装する方法

近年、インターネット技術の継続的な発展に伴い、Web サイトやアプリケーションのセキュリティとユーザー エクスペリエンスに対する要求がますます高まっています。ユーザーの登録とログインを容易にするために、サードパーティアカウントのログインは、Web サイトやアプリケーションで一般的に使用される機能の 1 つになっています。人気の PHP フレームワークとして、Laravel は便利なソーシャル ログイン認証機能を提供するため、サードパーティのログイン機能を実装するのに特に便利です。この記事では、Laravel を使用してサードパーティのログイン機能を実装する方法を紹介し、読者の参考のためにいくつかの実装コードを提供します。

1. サービスプロバイダー情報の設定

Laravel では、ソーシャル ログイン認証パッケージ socialite を使用してサードパーティ ログイン機能を実装できます。 socialite は、Facebook、Google、Twitter、WeChat などのさまざまな認定サービス プロバイダーをサポートしています。したがって、socialite を使用してサードパーティ ログイン機能を実装する前に、サービス プロバイダー情報を構成する必要があります。

GitHub を例にとると、OAuth アプリケーションを作成して認可することで、クライアント ID とクライアント キーを取得できます。具体的な取得方法は以下の通りです。

  1. GitHub Webサイトにアクセスし、アカウントにログインします。
  2. GitHub の設定ページに入り、[開発者設定] タブを選択し、[OAuth アプリ] をクリックして、[新しい OAuth アプリ] を選択します。
  3. アプリケーション名、アプリケーションのホームページ URL、認可コールバック URL など、アプリケーションの詳細を入力します。
  4. アプリケーションを送信して作成します。作成が成功すると、アプリケーションのクライアント ID やクライアント キーなどの情報が GitHub ページで確認できます。

この情報を使用して、/config/services.php という名前の Laravel 構成ファイルを作成し、次の内容をそれに追加できます:

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => 'http://localhost:8000/login/github/callback',
],

このうち、github は利用したいサービスプロバイダーの名前、client_idclient_secret は OAuth アプリケーションの申請時に取得した顧客です。 ID とクライアント シークレット。redirect は OAuth コールバック URL で、アプリケーションの作成時に入力した認可コールバック URL です。ここでは、localhost:8000/login/github/callback に設定します。後でこのルートをルーティング ファイルに作成します。

2. ルートの作成

次に、GitHub 経由でログインする機能を実装するために、Laravel アプリケーションのルーティング ファイルにルートを作成する必要があります。ここでは、Laravel の Route クラスを使用してルートを作成できます。

最初のステップは、ユーザーを GitHub ログイン ページにリダイレクトする承認リダイレクト ルートを作成することです。ルーティング ファイルに次のコードを追加します。

Route::get('login/github', function () {
    return Socialite::driver('github')->redirect();
});

その中で、Socialite::driver('github') は、socialite# の driver を呼び出します。 ## authorization package GitHub サービスプロバイダーのインスタンスを取得するメソッド。 redirect メソッドは OAuth 認証ジャンプを実装し、ユーザーを GitHub の認証および認可ページにリダイレクトします。

2 番目のステップでは、GitHub サービス プロバイダーから返されたユーザー情報を取得して処理する承認コールバック ルートを作成します。ルーティング ファイルに次のコードを追加します。

Route::get('login/github/callback', function () {
    $user = Socialite::driver('github')->user();
    // 处理用户信息
});

その中で、

Socialite::driver('github') は、socialite# の driver を呼び出します。 ## authorization package GitHub サービスプロバイダーのインスタンスを取得するメソッド。 user メソッドは、OAuth 認証を通じてユーザー情報を取得するプロセスを実装します。GitHub サービス プロバイダーからユーザーの情報を取得し、情報は $user## の形式で返されます。 # 変数。 $user

変数を取得した後、ユーザー情報を処理できます。各サードパーティ サービス プロバイダーによって返されるユーザー情報の形式は若干異なるため、ここでは詳しく説明しません。

3. パブリック メソッドを作成する

管理と使用を容易にするために、

app/Http/Controllers/Auth/LoginController.php

を作成できます。他のメソッドを呼び出すためのコントローラー GitHub メソッド。 このメソッドでは、まず Socialite::driver('github')->redirect()

メソッドを使用して、ユーザーを GitHub ログイン ページにリダイレクトする必要があります。ユーザー情報を取得するコールバック プロセス中に、

GitHubCallback メソッドでユーザー情報を処理できます。 以下は基本的なサンプルコードです:

<?php
namespace AppHttpControllersAuth;

use AppHttpControllersController;
use Socialite;

class LoginController extends Controller
{
    /**
     * 重定向到GitHub登录页面
     *
     * @return Response
     */
    public function GitHub()
    {
        return Socialite::driver('github')->redirect();
    }

    /**
     * 从GitHub获取用户信息
     *
     * @return Response
     */
    public function GitHubCallback()
    {
        $user = Socialite::driver('github')->user();
        dd($user);
    }
}

4. 拡張パッケージを使用する

上記の方法が面倒だと感じる場合は、ソーシャル ログイン認証を使用できます。拡張パッケージ

laravel/socialite

、この拡張パッケージには主要なサービスプロバイダーがカプセル化されており、認可されたサービスプロバイダーを構築するための対応するコマンドラインツールが提供されています。

インストール

laravel/socialite
  1. ターミナルでcomposerを使用して、
  2. laravel/socialite
拡張パッケージ:

composer require laravel/socialite
サービスプロバイダー情報の構成

  1. Laravel の構成ファイル
  2. config/services.php
に、使用する必要があるサービスプロバイダー情報を追加します。例:

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => '/auth/github/callback',
],
認可ルートの作成

  1. routes/web.php
routing ファイルに、検証されていない認可ルートを作成します。 :

Route::get('/auth/github', 'AuthLoginController@GitHub');

  1. 创建回调路由

routes/web.php路由文件中,创建一个授权回调路由:

Route::get('/auth/github/callback', 'AuthLoginController@GitHubCallback');
  1. 创建控制器

app/Http/Controllers/Auth目录下,创建一个名为LoginController.php的控制器。控制器中添加方法GitHubGitHubCallback实现授权和回调过程,具体代码如下:

use Socialite;

class LoginController extends Controller
{

    public function GitHub()
    {
        return Socialite::driver('github')->redirect();
    }

    public function GitHubCallback()
    {
        $user = Socialite::driver('github')->user();
        dd($user);
    }

}

至此,我们已经成功使用laravel/socialite扩展包实现了第三方登录的功能。

总结:

本文介绍了如何使用Laravel框架的社交化登录授权包socialite,在实现第三方登录功能方面变得尤为便利。通过配置服务商信息、创建路由以及使用扩展包等方法,我们可以轻松地实现通过GitHub登录的功能。希望这篇文章能够对各位开发人员有所帮助。

以上がLaravelを使用してサードパーティログイン機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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