사교계 소셜 로그인
Laravel 소셜 로그인
Configuration
- Routing
- 선택 매개변수
- 액세스 범위
- 아니요 인증 상태
- 사용자 세부 정보 검색
- 소개일반적인 양식 기반 인증 외에도 Laravel은 Laravel Socialite
- 를 사용하여 OAuth 공급자를 인증하는 간단하고 편리한 방법을 제공합니다. Socialite는 현재 Facebook, Twitter, LinkedIn, Google, GitHub, GitLab 및 Bitbucket에 대한 인증을 지원합니다. 다른 플랫폼용 드라이버는
소셜 로그인 업그레이드
Socialite의 새로운 주요 버전으로 업그레이드할 때 업그레이드 가이드를 주의 깊게 검토하세요.
설치
소셜 로그인 기능을 사용하기 전에 laravel/을 설치하세요. 프로젝트 종속 항목에 socialite 패키지를 추가하세요.
composer require laravel/socialite
Configuration
Socialite를 사용하기 전에 애플리케이션에서 사용하는 OAuth 서비스에 대한 자격 증명도 추가해야 합니다. 이러한 자격 증명은 config/services.php
구성 파일에 있어야 하며 facebook
, twitter
, linkedin 키와 함께 사용해야 합니다. 애플리케이션에 공급자가 필요한 항목에 따라
, google
, github
, gitlab
또는 bitbucket
. 예: config / services.php
配置文件中,并且应该使用密钥 facebook
,twitter
,linkedin
,google
,github
,gitlab
或 bitbucket
, 取决于您的应用程序所需的提供商。 例如:
'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
方法时,注意不要传递任何保留的关键字,如state
或response_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로 확인됩니다.
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)
如果你已经有了一个有效的用户令牌 / 秘钥,你可以使用 userFromTokenAndSecret
rrreee
이 글은 🎜LearnKu.com🎜 웹사이트에 처음 게재되었습니다. 🎜🎜 rrreee