社交界のソーシャルログイン
- 構成
- ルーティング
- オプションのパラメータ
- アクセス範囲
- 認証ステータスなし
- ユーザー詳細の取得
- はじめに
- Laravel は、一般的なフォームベースの認証に加えて、Laravel Socialite という便利な方法を使用して OAuth プロバイダーに認証する簡単な方法も提供します。 Socialite は現在、Facebook、Twitter、LinkedIn、Google、GitHub、GitLab、Bitbucket の認証をサポートしています。
他のプラットフォーム用のドライバーは、Socialite Providers コミュニティ ドライバー Web サイトで見つけることができます。
# Socialite の新しいメジャー バージョンにアップグレードする場合は、アップグレード ガイドを必ずよく読んでください。 ソーシャル ログイン機能の使用を開始する前に、Composer を通じて laravel/socialite パッケージをプロジェクトの依存関係に追加します: Socialite を使用する前に、アプリケーションで使用される OAuth サービスの資格情報を追加する必要もあります。これらの資格情報は、 次に、ユーザーを認証します。これには 2 つのルートが必要です。1 つはユーザーを OAuth プロバイダーにリダイレクトするルート、もう 1 つは認証の完了後に対応するプロバイダーからコールバック リクエストを受信するルートです。 Socialite には、ファサード メソッド もちろん、コントローラー メソッドでルーティング ルールを定義する必要もあります: 多くの OAuth プロバイダーは、リダイレクト リクエストのオプションのパラメーターをサポートしています。リクエストにオプションのパラメーターを含めるには、連想配列を使用して ユーザーをリダイレクトする前に、Socialite ログインのアップグレード
##インストール
composer require laravel/socialite
構成
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 に自動的に解決されます。 ルーティング
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');
オプションのパラメーター
with
メソッドを呼び出します。 return Socialite::driver('google')
->with(['hd' => 'example.com'])
->redirect();
with
メソッドを使用するときは、次のことを行わないように注意してください。 pass any は、state
や response_type
などのキーワードを保持します。 アクセス スコープ
スコープ ## を使用することもできます。 # リクエストに他の「スコープ」を追加するメソッド。このメソッドは、すべての既存のスコープを、指定したスコープとマージします:
return Socialite::driver('github')
->scopes(['read:user', 'public_repo'])
->redirect();
setScopes メソッドを使用して、すべての既存のスコープを上書きできます:
return Socialite::driver('github') ->setScopes(['read:user', 'public_repo']) ->redirect();
メソッドを使用して、セッション状態の検証を無効にすることができます。これは、API にソーシャル認証を追加するときに役立ちます: return Socialite::driver('google')->stateless()->user();
ユーザー インスタンスの取得
ユーザー インスタンスを取得したら、さらにユーザーの詳細を取得できます:
$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();
トークンからユーザーの詳細を取得します (OAuth2)
ユーザーの有効なアクセス トークンをすでに持っている場合は、userFromToken
メソッドを使用してユーザーの詳細を取得できます。
$user = Socialite::driver('github')->userFromToken($token);
トークンとキーからユーザーの詳細を取得する (OAuth1)
有効なユーザー トークン/キーをすでに持っている場合は、 を使用して詳細を取得できます。 userFromTokenAndSecret
メソッド:
$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);