How to use Socialite with Lumen
So I am playing around with a hobby project in Lumen, and I had a few issues setting up Socialite with Lumen.
Anyhow, as it often is with development, after a bit of persistence, I found a solution.
All I really needed was to fetch user details from a Facebook Access Token, that I have already fetched in another application.
Step 1: Install
Follow installation guide from the official documentation: https://laravel.com/docs/8.x/socialite#installation
Step 2: Create a config/services.php
file
Manually create config/services.php folder in the root of your Lumen project.
This config folder is not default in Lumen and you'll have to manually create it. Mine looks like this:
<?php
return [
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => 'http://example.com/callback-url',
]
];
Depending on your project, you might need to add more to your configuration.
Step 3: Modify bootstrap/app.php
In order for Lumen to register the newly created config/services.php
file, we'll need to modify bootstrap/app.php
a bit to look for this configuration, as well as registering the ServiceProvider
for Socialite.
Under "Register Config Files" add: $app->configure('services');
/*
|--------------------------------------------------------------------------
| Register Config Files
|--------------------------------------------------------------------------
|
| Now we will register the "app" configuration file. If the file exists in
| your configuration directory it will be loaded; otherwise, we'll load
| the default version. You may register other files below as needed.
|
*/
$app->configure('app');
$app->configure('services');
And then register your SocialiteServiceProvider
in the ServiceProviders
:
/*
|--------------------------------------------------------------------------
| Register Service Providers
|--------------------------------------------------------------------------
|
| Here we will register all of the application's service providers which
| are used to bind services into the container. Service providers are
| totally optional, so you are not required to uncomment this line.
|
*/
$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);
// $app->register(App\Providers\AppServiceProvider::class);
// $app->register(App\Providers\AuthServiceProvider::class);
// $app->register(App\Providers\EventServiceProvider::class);
$app->register(Laravel\Socialite\SocialiteServiceProvider::class);
Hurray, it should now work
At least it did for me. Now in my routes/web.php
I can use Socialite like this:
$router->get('/get-facebook-user', function () {
$user = Socialite::driver('facebook')->userFromToken('SOME_TOKEN');
dd($user); // the facebook user
});