Laravelでソーシャルログインを完全入門!Google・GitHub認証をやさしく実装
生徒
「Laravelのサイトで、GoogleログインやGitHubログインって作れるんですか?」
先生
「作れますよ。Laravel Socialiteという公式の仕組みを使います」
生徒
「メールアドレスとパスワードを作らなくても大丈夫なんですか?」
先生
「はい。他のサービスのログイン情報を借りて認証できます」
1. ソーシャルログインとは?
ソーシャルログインとは、GoogleやGitHubなど、すでに持っているアカウントを使ってログインできる仕組みです。新しくIDやパスワードを作らなくてよいので、利用者にとってとても便利です。
現実世界で例えると、会員証を毎回作らず、運転免許証や社員証を見せて本人確認をするようなイメージです。
2. Laravel Socialiteとは?
Laravel Socialiteは、Laravel公式のソーシャルログイン用ライブラリです。GoogleログインやGitHubログインなどを、難しい処理を書かずに実装できます。
公式が用意しているため情報も多く、Laravelの認証と認可を学ぶ初心者にとって安心して使える仕組みです。
3. Socialiteをインストールする
まずはLaravelプロジェクトにSocialiteを追加します。
composer require laravel/socialite
composerは、Laravelで便利な部品を追加するための道具です。このコマンドでSocialiteが使えるようになります。
4. Google・GitHubの認証情報を準備する
ソーシャルログインでは、GoogleやGitHub側に「このサイトは安全ですよ」と登録する必要があります。このときに発行されるのがクライアントIDとクライアントシークレットです。
これは「お店の登録番号と合言葉」のようなもので、正しく登録したサイトだけがログイン機能を使えます。
5. 環境設定ファイルに認証情報を書く
取得した情報は、設定ファイルに記述します。
GOOGLE_CLIENT_ID=xxxxxxxx
GOOGLE_CLIENT_SECRET=xxxxxxxx
GITHUB_CLIENT_ID=xxxxxxxx
GITHUB_CLIENT_SECRET=xxxxxxxx
このファイルは、アプリ全体の設定をまとめて管理するメモ帳のようなものです。
6. services.phpに設定を追加する
次に、Laravelに「GoogleとGitHubを使います」と伝えます。
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => '/login/google/callback',
],
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'redirect' => '/login/github/callback',
],
redirectは、ログイン後に戻ってくる住所のようなものです。
7. ルーティングを設定する
ログイン処理の入口を用意します。
Route::get('/login/google', [SocialLoginController::class, 'redirectGoogle']);
Route::get('/login/google/callback', [SocialLoginController::class, 'callbackGoogle']);
ルーティングとは、URLと処理を結びつける案内板のようなものです。
8. コントローラでログイン処理を書く
コントローラは、実際の処理をまとめる司令塔です。
use Laravel\Socialite\Facades\Socialite;
public function redirectGoogle()
{
return Socialite::driver('google')->redirect();
}
public function callbackGoogle()
{
$googleUser = Socialite::driver('google')->user();
}
ここでGoogleから利用者の情報を受け取ります。
9. ユーザー情報を保存してログインする
取得した情報をもとに、ユーザーを登録またはログインさせます。
$user = User::firstOrCreate(
['email' => $googleUser->getEmail()],
['name' => $googleUser->getName()]
);
Auth::login($user);
firstOrCreateは「いなければ作る、いれば使う」という便利な仕組みです。
10. ソーシャルログインのメリット
ソーシャルログインを使うと、パスワード管理の手間が減り、ログインのハードルが下がります。また、信頼できる外部サービスを使うことで安全性も高まります。
Laravel Socialiteは公式機能なので、Laravelの認証と認可を学ぶ中で自然に使える点も大きな利点です。
11. 初心者が混乱しやすいポイント
最初は「外部サービスに飛ぶ」「戻ってくる」という流れが分かりにくいかもしれません。これは、一度外に出て身分証を確認し、また戻ってくる流れだと考えると理解しやすくなります。
仕組みが分かれば、GoogleログインもGitHubログインも同じ考え方で実装できます。