Laravel Socialite とは
Laravel Socialite は、OAuth 2.0 を使ったソーシャルログインをシンプルに実装できる公式パッケージです。GitHub、Google、Facebook、X(Twitter)、LinkedIn など主要なプロバイダーに対応しており、複雑な OAuth の実装を数行のコードで済ませることができます。 組み込みでサポートされているプロバイダーは以下のとおりです。ソーシャルログインのフロー
インストール
Composer でパッケージを追加します。Socialite をメジャーバージョンアップする際は、必ず アップグレードガイド を確認してください。
設定
config/services.php
各プロバイダーのクライアント ID・シークレット・コールバック URL をconfig/services.php に追加します。
redirect オプションに相対パスを指定すると、自動的に完全な URL に解決されます。.env
環境変数でクレデンシャルを管理します。GitHub を例に示します。認証フロー
ルーティング
OAuth 認証には2つのルートが必要です。リダイレクト用とコールバック用です。ユーザーの保存とログイン
コールバックルートでユーザー情報を取得し、データベースに保存してからログインします。ユーザー情報の取得
user() メソッドが返すオブジェクトから、以下のプロパティ・メソッドでユーザー情報を取得できます。
アクセストークンからユーザーを取得
既存のアクセストークンからユーザー情報を取得する場合はuserFromToken() を使います。
ステートレスモード
Cookie セッションを使わない API ではstateless() メソッドでセッション状態の検証を無効化できます。
データベース連携
マイグレーション
users テーブルにソーシャルログイン用のカラムを追加します。
provider カラムで複数プロバイダーに対応
複数のプロバイダーをまとめて管理する場合はprovider / provider_id の2カラム構成が一般的です。
既存ユーザーとの紐付け
同じメールアドレスを持つ既存ユーザーとアカウントを紐付ける場合は、メールアドレスで検索してからカラムを更新します。スコープとオプション
スコープの追加
scopes() メソッドで追加のスコープを指定できます。
setScopes() メソッドを使うと、既存のスコープをすべて上書きします。
オプションパラメータ
with() メソッドで追加パラメータをリダイレクトリクエストに含めます。
Slack Bot トークン
Slack Bot トークンを生成する場合はasBotUser() を使います。
テスト
Socialite はテスト用のモック機能を提供しています。実際のプロバイダーへのリクエストなしに OAuth フローをテストできます。リダイレクトのテスト
コールバックのテスト
fake() メソッドにユーザーインスタンスを渡して、プロバイダーから返ってくるユーザー情報をモックします。User::fake() でフェイクユーザーを生成します。
fake() に追加属性を渡してオーバーライドできます。
Laravel\Socialite\One\User クラスを使用してください。
カスタムプロバイダーの作り方
組み込みプロバイダー以外を使いたい場合、Socialite::extend() でカスタムドライバーを登録するのが公式の正規の方法です。SocialiteManager は Illuminate\Support\Manager を継承しているため、他の Laravel ドライバーシステムと同じ仕組みで拡張できます。
Manager パターンと
extend() の仕組みについては Manager クラスの解説 も参照してください。1. プロバイダークラスを作成する
Laravel\Socialite\Two\AbstractProvider を継承し、4つの抽象メソッドを実装します。
2. サービスプロバイダーで登録する
AppServiceProvider の boot() メソッドで Socialite::extend() を使ってドライバーを登録します。
3. 設定を追加する
4. 通常の Socialite と同じように使う
登録後は組み込みプロバイダーとまったく同じ API で使えます。関連パッケージ
当サイトのオーナーが公開している Socialite 拡張パッケージです。いずれもSocialite::extend() を使った正規の方法で実装されており、config/services.php に設定を追加するだけで使えます。
LINE
LINE SDK for Laravel。Socialite による OAuth ログインに加え、Messaging API も統合。
Bluesky
AT Protocol (Bluesky) との連携。OAuth 認証とポスト送信をサポート。
Discord
Discord OAuth2 ログイン。
Threads
Meta Threads との連携。OAuth 認証と投稿 API をサポート。
Amazon
Login with Amazon による OAuth ログイン。
Mastodon
Mastodon インスタンスへの OAuth ログイン。
WordPress
WordPress.com およびセルフホスト WordPress への OAuth ログイン。