최근 몇 년간 인터넷 기술이 지속적으로 발전함에 따라 사람들은 웹사이트나 애플리케이션의 보안 및 사용자 경험에 대한 요구 사항이 점점 더 높아지고 있습니다. 사용자 등록 및 로그인을 용이하게 하기 위해 제3자 계정 로그인은 웹사이트 및 애플리케이션에서 일반적으로 사용되는 기능 중 하나가 되었습니다. 널리 사용되는 PHP 프레임워크인 Laravel은 편리한 소셜 로그인 인증 기능을 제공하므로 타사 로그인 기능을 구현하는 것이 특히 편리합니다. 이 기사에서는 Laravel을 사용하여 타사 로그인 기능을 구현하는 방법을 소개하고 독자의 참조를 위한 일부 구현 코드를 제공합니다.
1. 서비스 제공자 정보 구성
Laravel에서는 소셜 로그인 인증 패키지 socialite
를 사용하여 타사 로그인 기능을 구현할 수 있습니다. 소셜라이트
는 Facebook, Google, Twitter, WeChat 등을 포함한 다양한 공인 서비스 제공업체를 지원합니다. 따라서 socialite
를 사용하여 타사 로그인 기능을 구현하기 전에 서비스 제공자 정보를 구성해야 합니다. socialite
来实现第三方登录功能。而socialite
支持的授权服务提供商多种多样,包括Facebook、Google、Twitter、WeChat等。因此,在使用socialite
实现第三方登录功能之前,我们需要配置服务商信息。
以GitHub为例,通过创建并授权一个OAuth应用程序,我们可以获取到客户端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_id
和client_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
,这个扩展包已经对各大服务提供商进行了封装,并提供了相对应的命令行工具来构造授权服务提供商。
laravel/socialite
在终端中使用composer安装laravel/socialite
扩展包:
composer require laravel/socialite
在Laravel的配置文件config/services.php
中,添加需要使用的服务商信息,下面以GitHub为例:
'github' => [ 'client_id' => env('GITHUB_CLIENT_ID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'redirect' => '/auth/github/callback', ],
在routes/web.php
/config/services.php
라는 Laravel 구성 파일을 만들고 여기에 다음 콘텐츠를 추가할 수 있습니다. 🎜Route::get('/auth/github', 'AuthLoginController@GitHub');
github
는 우리가 사용하려는 서비스 제공자의 이름이고, client_id
와 client_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')
는 socialite
의 driver
메서드를 호출합니다. 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')
는 socialite
의 driver
메서드를 호출합니다. code> 인증 패키지를 통해 GitHub 서비스 공급자의 인스턴스를 가져옵니다. user
메소드는 OAuth 인증을 통해 사용자 정보를 얻는 프로세스를 구현하며, 이는 $user</code 형식으로 저장되는 GitHub 서비스 제공자로부터 사용자 정보를 얻습니다. > 변수 반환. 🎜🎜<code>$user
변수를 얻은 후 사용자 정보를 처리할 수 있습니다. 제3자 서비스 제공업체마다 반환하는 사용자 정보의 형식이 조금씩 다르기 때문에 여기서는 자세히 다루지 않겠습니다. 🎜🎜3. 공개 메소드 생성🎜🎜관리 및 사용을 용이하게 하기 위해 app/Http/Controllers/Auth/LoginController.php
에서 GitHub
메소드를 생성할 수 있습니다. 컨트롤러를 사용하여 다른 메서드를 호출합니다. 🎜🎜이 방법에서는 먼저 Socialite::driver('github')->redirect()
메서드를 사용하여 사용자를 GitHub 로그인 페이지로 리디렉션해야 합니다. 사용자 정보를 얻는 콜백 과정에서 GitHubCallback
메서드에서 사용자 정보를 처리할 수 있습니다. 🎜🎜다음은 기본 샘플 코드입니다. 🎜rrreee🎜 4. 확장 패키지 사용하기 🎜🎜위 방법이 번거롭다고 생각된다면 소셜 로그인 인증 확장 패키지 laravel/socialite
를 이용하시면 됩니다, 이 확장 패키지에는 주요 서비스 제공자가 캡슐화되었으며 해당 명령줄 도구가 제공되어 인증된 서비스 제공자를 구성할 수 있습니다. 🎜laravel/socialite
설치laravel/socialite
확장 패키지를 설치하세요: 🎜rrreee config/services.php
에서 사용해야 하는 서비스 제공자 정보를 추가하세요. , 다음과 같이 GitHub를 예로 들어 보겠습니다. 🎜rrreeeroutes/web.php
라우팅 파일에서 , 인증된 인증 경로를 생성하세요: 🎜Route::get('/auth/github', 'AuthLoginController@GitHub');
在routes/web.php
路由文件中,创建一个授权回调路由:
Route::get('/auth/github/callback', 'AuthLoginController@GitHubCallback');
在app/Http/Controllers/Auth
目录下,创建一个名为LoginController.php
的控制器。控制器中添加方法GitHub
和GitHubCallback
实现授权和回调过程,具体代码如下:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!