カテゴリ: Laravel 更新日: 2026/06/02

Laravelでソーシャルログインを完全入門!Google・GitHub認証をやさしく実装

Laravelでソーシャルログイン(Google, GitHub)を実装する方法(Laravel Socialite)
Laravelでソーシャルログイン(Google, GitHub)を実装する方法(Laravel Socialite)

先生と生徒の会話形式で理解しよう

生徒

「Laravelのサイトで、GoogleログインやGitHubログインって作れるんですか?」

先生

「作れますよ。Laravel Socialiteという公式の仕組みを使います」

生徒

「メールアドレスとパスワードを作らなくても大丈夫なんですか?」

先生

「はい。他のサービスのログイン情報を借りて認証できます」

1. ソーシャルログインとは?

1. ソーシャルログインとは?
1. ソーシャルログインとは?

ソーシャルログインとは、GoogleやGitHubなど、すでに持っているアカウントを使ってログインできる仕組みです。新しくIDやパスワードを作らなくてよいので、利用者にとってとても便利です。

現実世界で例えると、会員証を毎回作らず、運転免許証や社員証を見せて本人確認をするようなイメージです。

2. Laravel Socialiteとは?

2. Laravel Socialiteとは?
2. Laravel Socialiteとは?

Laravel Socialiteは、Laravel公式のソーシャルログイン用ライブラリです。GoogleログインやGitHubログインなどを、難しい処理を書かずに実装できます。

公式が用意しているため情報も多く、Laravelの認証と認可を学ぶ初心者にとって安心して使える仕組みです。

3. Socialiteをインストールする

3. Socialiteをインストールする
3. Socialiteをインストールする

まずはLaravelプロジェクトにSocialiteを追加します。


composer require laravel/socialite

composerは、Laravelで便利な部品を追加するための道具です。このコマンドでSocialiteが使えるようになります。

4. Google・GitHubの認証情報を準備する

4. Google・GitHubの認証情報を準備する
4. Google・GitHubの認証情報を準備する

ソーシャルログインでは、GoogleやGitHub側に「このサイトは安全ですよ」と登録する必要があります。このときに発行されるのがクライアントIDクライアントシークレットです。

これは「お店の登録番号と合言葉」のようなもので、正しく登録したサイトだけがログイン機能を使えます。

5. 環境設定ファイルに認証情報を書く

5. 環境設定ファイルに認証情報を書く
5. 環境設定ファイルに認証情報を書く

取得した情報は、設定ファイルに記述します。


GOOGLE_CLIENT_ID=xxxxxxxx
GOOGLE_CLIENT_SECRET=xxxxxxxx
GITHUB_CLIENT_ID=xxxxxxxx
GITHUB_CLIENT_SECRET=xxxxxxxx

このファイルは、アプリ全体の設定をまとめて管理するメモ帳のようなものです。

6. services.phpに設定を追加する

6. services.phpに設定を追加する
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. ルーティングを設定する

7. ルーティングを設定する
7. ルーティングを設定する

ログイン処理の入口を用意します。


Route::get('/login/google', [SocialLoginController::class, 'redirectGoogle']);
Route::get('/login/google/callback', [SocialLoginController::class, 'callbackGoogle']);

ルーティングとは、URLと処理を結びつける案内板のようなものです。

8. コントローラでログイン処理を書く

8. コントローラでログイン処理を書く
8. コントローラでログイン処理を書く

コントローラは、実際の処理をまとめる司令塔です。


use Laravel\Socialite\Facades\Socialite;

public function redirectGoogle()
{
    return Socialite::driver('google')->redirect();
}

public function callbackGoogle()
{
    $googleUser = Socialite::driver('google')->user();
}

ここでGoogleから利用者の情報を受け取ります。

9. ユーザー情報を保存してログインする

9. ユーザー情報を保存してログインする
9. ユーザー情報を保存してログインする

取得した情報をもとに、ユーザーを登録またはログインさせます。


$user = User::firstOrCreate(
    ['email' => $googleUser->getEmail()],
    ['name' => $googleUser->getName()]
);

Auth::login($user);

firstOrCreateは「いなければ作る、いれば使う」という便利な仕組みです。

10. ソーシャルログインのメリット

10. ソーシャルログインのメリット
10. ソーシャルログインのメリット

ソーシャルログインを使うと、パスワード管理の手間が減り、ログインのハードルが下がります。また、信頼できる外部サービスを使うことで安全性も高まります。

Laravel Socialiteは公式機能なので、Laravelの認証と認可を学ぶ中で自然に使える点も大きな利点です。

11. 初心者が混乱しやすいポイント

11. 初心者が混乱しやすいポイント
11. 初心者が混乱しやすいポイント

最初は「外部サービスに飛ぶ」「戻ってくる」という流れが分かりにくいかもしれません。これは、一度外に出て身分証を確認し、また戻ってくる流れだと考えると理解しやすくなります。

仕組みが分かれば、GoogleログインもGitHubログインも同じ考え方で実装できます。

まとめ

まとめ
まとめ

Laravelでソーシャルログインを実装する方法について学んだ内容を振り返ると、最も重要なのは認証の仕組みを正しく理解することです。GoogleログインやGitHubログインなどの外部認証サービスを利用する場合でも、基本となるのはLaravelの認証機能です。Laravel Socialiteを活用することで、複雑に見える外部認証処理を整理しながら、安全で安定したログイン機能を構築できます。

ソーシャルログインは、ユーザーが新しくパスワードを作成しなくても、既存のアカウントを利用してログインできる便利な仕組みです。これにより、ユーザー登録の手間を減らし、離脱率の低下にもつながります。特にWebアプリケーション開発においては、ユーザー体験の向上が重要であり、ログイン画面の簡素化は大きなメリットになります。

実装手順としては、まずLaravel Socialiteをインストールし、次にGoogleやGitHub側でクライアントIDとクライアントシークレットを取得します。その後、環境設定ファイルに認証情報を記述し、設定ファイルにサービス情報を追加します。さらにルーティングを設定し、コントローラでリダイレクト処理とコールバック処理を実装します。この流れを正しく理解することが、ソーシャルログイン実装の第一歩です。

以下は、コントローラでの基本的な実装例です。Laravel Socialiteを使用してGoogle認証を行い、取得したユーザー情報をもとにログイン処理を実行します。


use Laravel\Socialite\Facades\Socialite;
use Illuminate\Support\Facades\Auth;
use App\Models\User;

public function redirectGoogle()
{
    return Socialite::driver('google')->redirect();
}

public function callbackGoogle()
{
    $googleUser = Socialite::driver('google')->user();

    $user = User::firstOrCreate(
        ['email' => $googleUser->getEmail()],
        ['name' => $googleUser->getName()]
    );

    Auth::login($user);

    return redirect('/home');
}

このように、外部サービスから取得したメールアドレスを基準にユーザーを検索し、存在しなければ新規作成することで、スムーズなログイン処理を実現できます。firstOrCreateを利用することで、重複登録を防ぎながら安全にユーザー管理ができます。

また、ソーシャルログインを導入する際には、セキュリティ対策も重要です。環境設定ファイルに記載するクライアントシークレットは外部に公開してはいけません。さらに、コールバック用のルートは正しく設定し、許可されたリダイレクト先のみを使用することが大切です。これらを守ることで、認証情報の漏えいを防ぎ、安全なWebアプリケーション開発につながります。

Laravelでの認証と認可の仕組みを理解し、ソーシャルログインの流れを整理することで、より実践的なWeb開発が可能になります。ログイン機能は多くのWebサービスの基盤となる部分であり、ユーザー管理の中心的な役割を担います。今回の内容を通して、外部認証の基本構造、Laravelの認証機能、Socialiteの使い方、ユーザー登録処理、そしてログイン処理まで一連の流れを体系的に理解することができました。

今後は、複数の外部認証プロバイダへの対応や、既存ユーザーとの連携処理、プロフィール情報の更新など、応用的な実装にも発展させることができます。ソーシャルログインは単なる便利機能ではなく、ユーザー体験とセキュリティの両面を向上させる重要な技術です。Laravel開発において、認証と認可の知識を深めながら実装することで、より完成度の高いアプリケーションを構築できるようになります。

先生と生徒の振り返り会話

生徒

「ソーシャルログインの流れが少し分かってきました。外部サービスに一度移動して、戻ってくる仕組みなんですね。」

先生

「その通りです。リダイレクトとコールバックの流れを理解することが大切です。」

生徒

「Laravel Socialiteを使えば、複雑な処理を書かなくても実装できるのが便利ですね。」

先生

「はい。さらにfirstOrCreateやAuthを組み合わせることで、安全なユーザー管理ができます。認証と認可の基礎を理解すれば、他の外部サービスにも応用できますよ。」

関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのルートとコントローラを対応付ける方法(名前付きルート)を初心者向けに解説
New2
Symfony
Symfonyで画像やファイルをアップロードする時のバリデーション完全ガイド!初心者でもわかる入力チェックの基本
New3
Laravel
Laravelで言語切替UIを作る!多言語対応(ローカリゼーション)実践ガイド
New4
CodeIgniter
CodeIgniterでローカル開発環境を構築する方法!初心者向け完全ガイド
人気記事
No.1
Java&Spring記事人気No1
CodeIgniter
CodeIgniterのキャッシュ管理を完全ガイド!初心者でもわかるメリットと注意点
No.2
Java&Spring記事人気No2
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
No.3
Java&Spring記事人気No3
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
No.4
Java&Spring記事人気No4
CodeIgniter
CodeIgniterとは?特徴・できること・他PHPフレームワークとの違いを完全解説
No.5
Java&Spring記事人気No5
Laravel
Laravelローカリゼーション入門!言語の取得と切り替え(App::getLocale / setLocale)を徹底解説
No.6
Java&Spring記事人気No6
CodeIgniter
CodeIgniterのビュー共通化ガイド!初心者でもわかる部分ビューの読み込みとinclude設計
No.7
Java&Spring記事人気No7
Symfony
TwigのHTMLエスケープとrawフィルタの使い方を完全解説!初心者にもわかるテンプレート表示のコツ
No.8
Java&Spring記事人気No8
Laravel
Laravelのルーティングの基本構文と書き方をやさしく解説!初心者でも理解できるWebルートの仕組み