LaravelでGoogleアカウントでログインする機能を実装するには、Laravel Socialiteというパッケージを使用するのが簡単です。以下に手順を説明します。
1. Laravel Socialiteのインストール
まず、Laravel Socialiteパッケージをインストールします。
composer require laravel/socialite
2. Google APIクライアントIDとシークレットの取得
前述の手順でGoogle Cloud Consoleでプロジェクトを作成し、OAuth 2.0クライアントIDとクライアントシークレットを取得します。
3. 環境設定
.env
ファイルにGoogleのクライアントIDとシークレットを追加します。
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_REDIRECT_URL=https://yourapp.com/auth/google/callback
4. Socialite設定の追加
config/services.php
ファイルにGoogleの設定を追加します。
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_REDIRECT_URL'),
],
5. 認証ルートの設定
routes/web.php
に認証ルートを追加します。
use App\Http\Controllers\Auth\GoogleController;
Route::get('auth/google', [GoogleController::class, 'redirectToGoogle']);
Route::get('auth/google/callback', [GoogleController::class, 'handleGoogleCallback']);
6. GoogleControllerの作成
以下のコマンドでコントローラを作成します。
php artisan make:controller Auth/GoogleController
app/Http/Controllers/Auth/GoogleController.php
ファイルを以下のように編集します。
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Laravel\Socialite\Facades\Socialite;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
class GoogleController extends Controller
{
/**
* Redirect the user to the Google authentication page.
*
* @return \Illuminate\Http\Response
*/
public function redirectToGoogle()
{
return Socialite::driver('google')->redirect();
}
/**
* Obtain the user information from Google.
*
* @return \Illuminate\Http\Response
*/
public function handleGoogleCallback()
{
$googleUser = Socialite::driver('google')->stateless()->user();
$user = User::updateOrCreate(
['email' => $googleUser->getEmail()],
[
'name' => $googleUser->getName(),
'google_id' => $googleUser->getId(),
'avatar' => $googleUser->getAvatar()
]
);
Auth::login($user);
return redirect()->intended('dashboard');
}
}
7. ユーザーモデルの編集
app/Models/User.php
ファイルを以下のように編集して、新しいフィールドを追加します。
protected $fillable = [
'name',
'email',
'password',
'google_id',
'avatar',
];
8. マイグレーションの作成
google_id
とavatar
カラムを追加するためにマイグレーションを作成します。
php artisan make:migration add_google_id_to_users_table --table=users
マイグレーションファイルを以下のように編集します。
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('google_id')->nullable();
$table->string('avatar')->nullable();
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('google_id');
$table->dropColumn('avatar');
});
}
マイグレーションを実行します。
php artisan migrate
9. 認証ビューの設定
ユーザーがGoogleログインを開始できるように、ログインビューにリンクを追加します。
<a href="{{ url('auth/google') }}">Login with Google</a>
10. 動作確認
すべての手順が完了したら、アプリケーションを起動して、Googleアカウントでログインできることを確認します。
これで、LaravelでGoogleアカウントを使用した認証が実装されます。