1
0

Laravel Socialiteでのリダイレクト先を動的に設定する

Last updated at Posted at 2022-10-14

Socialiteで特定のGoogleアカウントで可能なログイン機能を実装したのですが、それとは別にGoogleアカウントの登録機能を実装する必要があり、少しつまづいたのでメモ。

config/services.phpに記述するプロバイダのリダイレクト先URLは一つしかできないので、どうやって複数のリダイレクト先を設定するか悩みました。

環境

Laravel Framework 9.35.1

解決策

まずGoogle Cloud Platformで新たなリダイレクト先URLを登録。

config/services.php
'google' => [
    'client_id' => env('GOOGLE_CLIENT_ID'),
    'client_secret' => env('GOOGLE_CLIENT_SECRET'),
    'redirect' => env('GOOGLE_CALLBACK_URL'),
]

services.phpには使用する頻度の高いリダイレクト先URLを設定しておく。

RegisterAccountController.php
public function redirectToGoogle()
{
    config(['services.google.redirect' => env('ANOTHER_GOOGLE_CALLBACK_URL')]);
    return Socialite::driver('google')->redirect();
}

Googleにリダイレクトする際に、ヘルパ関数config()をつかって一時的にredirectを書き換え。

RegisterAccountController.php
public function getUserData()
{
    config(['services.google.redirect' => env('ANOTHER_GOOGLE_CALLBACK_URL')]);
    $user = Socialite::driver('google')->stateless()->user();
}

Googleからユーザーデータを受け取る際にも一時的にredirectを書き換える。
これで、ログインフォームとは別にGoogleユーザーの情報を受け取ることが可能になります!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0