>  기사  >  PHP 프레임워크  >  Laravel을 사용하여 타사 로그인 기능을 구현하는 방법

Laravel을 사용하여 타사 로그인 기능을 구현하는 방법

王林
王林원래의
2023-11-02 11:01:111288검색

Laravel을 사용하여 타사 로그인 기능을 구현하는 방법

최근 몇 년간 인터넷 기술이 지속적으로 발전함에 따라 사람들은 웹사이트나 애플리케이션의 보안 및 사용자 경험에 대한 요구 사항이 점점 더 높아지고 있습니다. 사용자 등록 및 로그인을 용이하게 하기 위해 제3자 계정 로그인은 웹사이트 및 애플리케이션에서 일반적으로 사용되는 기능 중 하나가 되었습니다. 널리 사용되는 PHP 프레임워크인 Laravel은 편리한 소셜 로그인 인증 기능을 제공하므로 타사 로그인 기능을 구현하는 것이 특히 편리합니다. 이 기사에서는 Laravel을 사용하여 타사 로그인 기능을 구현하는 방법을 소개하고 독자의 참조를 위한 일부 구현 코드를 제공합니다.

1. 서비스 제공자 정보 구성

Laravel에서는 소셜 로그인 인증 패키지 socialite를 사용하여 타사 로그인 기능을 구현할 수 있습니다. 소셜라이트는 Facebook, Google, Twitter, WeChat 등을 포함한 다양한 공인 서비스 제공업체를 지원합니다. 따라서 socialite를 사용하여 타사 로그인 기능을 구현하기 전에 서비스 제공자 정보를 구성해야 합니다. socialite来实现第三方登录功能。而socialite支持的授权服务提供商多种多样,包括Facebook、Google、Twitter、WeChat等。因此,在使用socialite实现第三方登录功能之前,我们需要配置服务商信息。

以GitHub为例,通过创建并授权一个OAuth应用程序,我们可以获取到客户端ID和客户端密钥两个信息。具体的获取方式如下:

  1. 访问GitHub的网站,并登录账户。
  2. 进入GitHub的设置页面,选择"Developer settings"选项卡,点击"OAuth Apps",然后选择"New OAuth App"。
  3. 填写应用程序的详细信息,包括应用名称、应用主页URL、授权回调URL等。
  4. 提交并创建应用程序。创建成功后,可以在GitHub页面中找到该应用程序的客户端ID和客户端密钥等信息。

有了这些信息之后,我们就可以创建一个名为/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,后面我们将会在路由文件中创建这个路由。

二、创建路由

接下来,我们需要在Laravel应用程序的路由文件中创建路由,实现通过GitHub登录的功能。在这里,我们可以使用Laravel的Route类来创建路由。

第一步,我们需要创建一个授权跳转路由,由它负责将用户跳转至GitHub登录页面。在路由文件中添加以下代码:

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

其中,Socialite::driver('github')调用socialite授权包的driver方法,获取到GitHub服务提供商的实例。而redirect方法则实现了OAuth授权跳转,将用户重定向到GitHub的认证授权页面上。

第二步,我们创建一个授权回调路由,由它负责获取GitHub服务提供商返回的用户信息,并进行处理。在路由文件中添加以下代码:

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

其中,Socialite::driver('github')调用socialite授权包的driver方法,获取到GitHub服务提供商的实例。而user方法则实现了OAuth授权获取用户信息的过程,它会从GitHub服务提供商获取到用户的信息,该信息将以$user变量形式被返回。

在获取到$user变量之后,我们便可以对用户信息进行处理了。由于每个第三方服务提供商返回的用户信息格式略有不同,因此这里就不做详细展开了。

三、创建公用方法

为了方便管理和使用,我们可以在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);
    }
}

四、使用扩展包

如果你觉得上述方法过程繁琐,可以使用社交化登录授权扩展包laravel/socialite,这个扩展包已经对各大服务提供商进行了封装,并提供了相对应的命令行工具来构造授权服务提供商。

  1. 安装laravel/socialite

在终端中使用composer安装laravel/socialite扩展包:

composer require laravel/socialite
  1. 配置服务商信息

在Laravel的配置文件config/services.php中,添加需要使用的服务商信息,下面以GitHub为例:

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => '/auth/github/callback',
],
  1. 创建授权路由

routes/web.php

GitHub를 예로 들어 OAuth 애플리케이션을 생성하고 승인하면 클라이언트 ID와 클라이언트 키를 얻을 수 있습니다. 구체적인 획득 방법은 다음과 같습니다. 🎜
  1. GitHub 웹사이트를 방문하여 계정에 로그인하세요.
  2. GitHub 설정 페이지에 들어가서 "개발자 설정" 탭을 선택하고 "OAuth 앱"을 클릭한 다음 "새 OAuth 앱"을 선택하세요.
  3. 애플리케이션 이름, 애플리케이션 홈페이지 URL, 인증 콜백 URL 등을 포함하여 애플리케이션에 대한 자세한 정보를 입력합니다.
  4. 신청서를 제출하고 작성하세요. 성공적으로 생성되면 애플리케이션의 클라이언트 ID, 클라이언트 키 등의 정보를 GitHub 페이지에서 확인할 수 있습니다.
🎜이 정보를 사용하여 /config/services.php라는 Laravel 구성 파일을 만들고 여기에 다음 콘텐츠를 추가할 수 있습니다. 🎜
Route::get('/auth/github', 'AuthLoginController@GitHub');
🎜 그중 github는 우리가 사용하려는 서비스 제공자의 이름이고, client_idclient_secret는 OAuth 애플리케이션을 신청할 때 얻은 고객입니다. 클라이언트 ID와 클라이언트 비밀번호, redirect는 OAuth 콜백 URL로, 애플리케이션을 생성할 때 입력한 인증 콜백 URL입니다. 여기서는 이를 localhost:8000/login/github/callback으로 설정합니다. 나중에 라우팅 파일에 이 경로를 생성할 것입니다. 🎜🎜2. 경로 생성🎜🎜다음으로 GitHub를 통한 로그인 기능을 구현하기 위해 Laravel 애플리케이션의 라우팅 파일에 경로를 생성해야 합니다. 여기서는 Laravel의 Route 클래스를 사용하여 경로를 생성할 수 있습니다. 🎜🎜첫 번째 단계에서는 사용자를 GitHub 로그인 페이지로 리디렉션하는 인증 리디렉션 경로를 만들어야 합니다. 라우팅 파일에 다음 코드를 추가하세요: 🎜
Route::get('/auth/github/callback', 'AuthLoginController@GitHubCallback');
🎜 그 중 Socialite::driver('github')socialitedriver 메서드를 호출합니다. code> 인증 패키지를 통해 GitHub 서비스 공급자의 인스턴스를 가져옵니다. redirect 메소드는 OAuth 인증 점프를 구현하고 사용자를 GitHub의 인증 및 인증 페이지로 리디렉션합니다. 🎜🎜두 번째 단계에서는 GitHub 서비스 공급자가 반환한 사용자 정보를 가져와 처리하는 권한 부여 콜백 경로를 만듭니다. 라우팅 파일에 다음 코드를 추가하세요: 🎜
use Socialite;

class LoginController extends Controller
{

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

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

}
🎜 그 중 Socialite::driver('github')socialitedriver 메서드를 호출합니다. code> 인증 패키지를 통해 GitHub 서비스 공급자의 인스턴스를 가져옵니다. user 메소드는 OAuth 인증을 통해 사용자 정보를 얻는 프로세스를 구현하며, 이는 $user형식으로 저장되는 GitHub 서비스 제공자로부터 사용자 정보를 얻습니다. > 변수 반환. 🎜🎜$user 변수를 얻은 후 사용자 정보를 처리할 수 있습니다. 제3자 서비스 제공업체마다 반환하는 사용자 정보의 형식이 조금씩 다르기 때문에 여기서는 자세히 다루지 않겠습니다. 🎜🎜3. 공개 메소드 생성🎜🎜관리 및 사용을 용이하게 하기 위해 app/Http/Controllers/Auth/LoginController.php에서 GitHub 메소드를 생성할 수 있습니다. 컨트롤러를 사용하여 다른 메서드를 호출합니다. 🎜🎜이 방법에서는 먼저 Socialite::driver('github')->redirect() 메서드를 사용하여 사용자를 GitHub 로그인 페이지로 리디렉션해야 합니다. 사용자 정보를 얻는 콜백 과정에서 GitHubCallback 메서드에서 사용자 정보를 처리할 수 있습니다. 🎜🎜다음은 기본 샘플 코드입니다. 🎜rrreee🎜 4. 확장 패키지 사용하기 🎜🎜위 방법이 번거롭다고 생각된다면 소셜 로그인 인증 확장 패키지 laravel/socialite를 이용하시면 됩니다, 이 확장 패키지에는 주요 서비스 제공자가 캡슐화되었으며 해당 명령줄 도구가 제공되어 인증된 서비스 제공자를 구성할 수 있습니다. 🎜
  1. laravel/socialite 설치
🎜터미널에서 작곡가를 사용하여 laravel/socialite 확장 패키지를 설치하세요: 🎜rrreee
  1. 서비스 제공자 정보 구성
🎜Laravel의 구성 파일 config/services.php에서 사용해야 하는 서비스 제공자 정보를 추가하세요. , 다음과 같이 GitHub를 예로 들어 보겠습니다. 🎜rrreee
  1. 인증 경로 만들기
🎜 routes/web.php 라우팅 파일에서 , 인증된 인증 경로를 생성하세요: 🎜
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.