사교계 소셜 로그인


Laravel 소셜 로그인
설치

Configuration
  • Routing
  • 선택 매개변수
  • 액세스 범위
  • 아니요 인증 상태
  • 사용자 세부 정보 검색
  • 소개일반적인 양식 기반 인증 외에도 Laravel은
  • Laravel Socialite
  • 를 사용하여 OAuth 공급자를 인증하는 간단하고 편리한 방법을 제공합니다. Socialite는 현재 Facebook, Twitter, LinkedIn, Google, GitHub, GitLab 및 Bitbucket에 대한 인증을 지원합니다.
  • 다른 플랫폼용 드라이버는
Socialite Providers

커뮤니티 드라이브 웹사이트에서 찾을 수 있습니다.

소셜 로그인 업그레이드

Socialite의 새로운 주요 버전으로 업그레이드할 때 업그레이드 가이드를 주의 깊게 검토하세요.

설치

소셜 로그인 기능을 사용하기 전에 laravel/을 설치하세요. 프로젝트 종속 항목에 socialite 패키지를 추가하세요.

composer require laravel/socialite

Configuration

Socialite를 사용하기 전에 애플리케이션에서 사용하는 OAuth 서비스에 대한 자격 증명도 추가해야 합니다. 이러한 자격 증명은 config/services.php 구성 파일에 있어야 하며 facebook, twitter, linkedin 키와 함께 사용해야 합니다. 애플리케이션에 공급자가 필요한 항목에 따라 , google, github, gitlab 또는 bitbucket. 예: config / services.php 配置文件中,并且应该使用密钥 facebooktwitterlinkedingooglegithubgitlabbitbucket, 取决于您的应用程序所需的提供商。 例如:

'github' => [ 
   'client_id' => env('GITHUB_CLIENT_ID'),    
   'client_secret' => env('GITHUB_CLIENT_SECRET'),    
   'redirect' => 'http://your-callback-url',
  ],

如果 redirect 项的值是个相对路径,它会自动解析为全称 URL 。

路由

接下来,就要对用户认证了!这需要两个路由:一个路由用于把用户重定向到 OAuth 提供器,另一个则用于在认证完成后接收相应提供器的回调请求。可以通过 facade 方式 Socialite:: 来访问 Socialite:

<?php
    namespace App\Http\Controllers\Auth;use Socialite;
    class LoginController extends Controller{   
     /**
     * Redirect the user to the GitHub authentication page.
     *
     * @return \Illuminate\Http\Response
     */    
     public function redirectToProvider()   
      {     
         return Socialite::driver('github')->redirect();  
       }   
    /**
     * Obtain the user information from GitHub.
     *
     * @return \Illuminate\Http\Response
     */    
    public function handleProviderCallback()  
      {      
        $user = Socialite::driver('github')->user();        
        // $user->token;    
      }
    }

redirect 方法负责将用户发送到 OAuth 提供程序,而 user 方法将读取传入请求并从提供程序检索用户的信息。

当然,还需要在你的控制器方法中定义好路由规则:

Route::get('login/github', 'Auth\LoginController@redirectToProvider');
Route::get('login/github/callback', 'Auth\LoginController@handleProviderCallback');

可选参数

许多 OAuth 提供程序支持重定向请求中的可选参数。 要在请求中包含任何可选参数,请使用关联数组调用 with 方法:

return Socialite::driver('google') 
   ->with(['hd' => 'example.com'])    
   ->redirect();

使用 with 方法时,注意不要传递任何保留的关键字,如 stateresponse_type

访问作用域

在重定向用户之前,您还可以使用 scopes 方法在请求中添加其他「作用域」。 此方法将所有现有范围与您提供的范围合并:

return Socialite::driver('github') 
   ->scopes(['read:user', 'public_repo'])    
   ->redirect();

您可以使用 setScopes 方法覆盖所有现有范围:

return Socialite::driver('github') 
   ->setScopes(['read:user', 'public_repo'])    
   ->redirect();

无认证状态

stateless

return Socialite::driver('google')->stateless()->user();

redirect 항목의 값이 상대 경로인 경우 자동으로 전체 URL로 확인됩니다.

routing🎜🎜다음으로 사용자를 인증할 차례입니다! 이를 위해서는 두 가지 경로가 필요합니다. 하나는 사용자를 OAuth 공급자로 리디렉션하는 경로이고, 다른 하나는 인증이 완료된 후 해당 공급자로부터 콜백 요청을 수신하는 경로입니다. Socialite는 Socialite:: 파사드 메소드를 통해 접근할 수 있습니다: 🎜
$user = Socialite::driver('github')->user();
// OAuth2 Providers
$token = $user->token;
$refreshToken = $user->refreshToken; 
// not always provided
$expiresIn = $user->expiresIn;
// OAuth1 Providers
$token = $user->token;
$tokenSecret = $user->tokenSecret;
// 获取所有 Providers
$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();
🎜 redirect 메소드는 사용자를 OAuth 제공자에게 보내는 역할을 담당하고, user< /code> 메소드는 들어오는 요청을 읽고 공급자로부터 사용자 정보를 검색합니다. 🎜🎜물론, 컨트롤러 메소드에서 라우팅 규칙도 정의해야 합니다: 🎜
$user = Socialite::driver('github')->userFromToken($token);
🎜🎜🎜
🎜🎜 선택 사항 매개변수 🎜🎜많은 OAuth 제공업체는 리디렉션 요청에서 선택적 매개변수를 지원합니다. 요청에 선택적 매개변수를 포함하려면 연관 배열과 함께 with 메서드를 호출하세요. 🎜
$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);
🎜 with 메서드를 사용할 때 매개변수를 전달하지 않도록 주의하세요. 예약된 키 state 또는 response_type과 같은 단어입니다. 🎜
🎜
🎜🎜
🎜🎜액세스 범위🎜🎜사용자를 리디렉션하기 전에 < code>scopes 메소드는 요청에 추가 "범위"를 추가합니다. 이 메소드는 모든 기존 범위를 사용자가 제공한 범위와 병합합니다. 🎜rrreee🎜 setScopes 메소드를 사용하여 모든 기존 범위를 재정의할 수 있습니다. 🎜rrreee🎜🎜🎜 < div name="8d0b2d" data-unique="8d0b2d">🎜🎜인증 상태 없음🎜🎜상태 비저장 메서드를 사용하여 세션 상태 유효성 검사를 비활성화할 수 있습니다. 이는 API에 소셜 인증을 추가할 때 매우 유용합니다. 🎜rrreee🎜🎜🎜🎜🎜🎜

사용자 인스턴스 가져오기

사용자 인스턴스가 있으면 더 많은 사용자 세부 정보를 얻을 수 있습니다.

rrreee

토큰(OAuth2)에서 사용자 세부 정보 검색

사용자에 대한 유효한 액세스 토큰이 이미 있는 경우 검색할 수 있습니다. userFromToken 메소드를 사용하여 사용자 세부정보. userFromToken 方法检索用户的详细信息。

rrreee

从令牌和秘钥中检索用户详细信息 (OAuth1)

如果你已经有了一个有效的用户令牌 / 秘钥,你可以使用 userFromTokenAndSecretrrreee

토큰 및 키에서 사용자 세부 정보 검색(OAuth1)이미 유효한 사용자 토큰/키가 있는 경우 < code>userFromTokenAndSecret 메소드:
rrreee
이 글은 🎜LearnKu.com🎜 웹사이트에 처음 게재되었습니다. 🎜🎜