Dtp
Dtp

Reputation: 51

Driver [provider] not supported laravel/socialite

I'm using Laravel 5.4 and Socialite 3.0

With every new socialite provider I add I get the error:

Driver [provider] not supported.

for example when adding socialiteproviders/twitch 3.0 I will get the error:

Driver [twitch] not supported.

However I can use a provider that's already built in to Socialite, github for example works as expected.

I have tried three different providers and I get the same result each time, what am I doing wrong?

Here are my routes:

Route::get('/auth/bnet', 'BnetController@redirectToProvider');

Route::get('/auth/bnet/return', function() {
    $user = Socialite::driver('battlenet')->user();
    dd($user->accessTokenResponseBody);
});

Route::get('/auth/git', function() {
    return Socialite::driver('github')->redirect();
});

Route::get('/auth/twitch', function() {
    return Socialite::with('twitch')->redirect();
});

Here's my $listen from my EventServiceProvider:

    protected $listen = [
      \SocialiteProviders\Manager\SocialiteWasCalled::class => [
        // add your listeners (aka providers) here
        //'SocialiteProviders\Battlenet\BattlenetExtendSocialite@handle',
        'Reflex\SocialiteProviders\BattleNet\BattleNetExtendSocialite@handle',
        'SocialiteProviders\Twitch\TwitchExtendSocialite@handle',
      ],
    ];

I have added SocialiteProviders\Manager\ServiceProvider::class, to my providers array in app.php, I have added the Socialite facade ('Socialite' => Laravel\Socialite\Facades\Socialite::class,) to my aliases array also in app.php and have added the appropriate keys to my .env

Upvotes: 5

Views: 21055

Answers (7)

Bréndal Teixeira
Bréndal Teixeira

Reputation: 1175

In my case (Laravel version 11.x) I needed to go at app/Providers/AppServiceProvider.php and add these lines inside boot() function.

// Register the Azure provider with the Socialite event
Event::listen(function (SocialiteWasCalled $event) {
     $event->extendSocialite('azure', \SocialiteProviders\Azure\Provider::class);
});

and these imports before class declaration

use Illuminate\Support\Facades\Event;
use SocialiteProviders\Manager\SocialiteWasCalled;

Upvotes: 1

Zain ul Eman
Zain ul Eman

Reputation: 1

I had the same issue and my php version was 7 and I found solution. In config/app.php providers array add these 2 lines and then it worked:

    Laravel\Socialite\SocialiteServiceProvider::class,
    \SocialiteProviders\Manager\ServiceProvider::class,

make sure you have already installed your provider socialite package, in your case it would be:

    composer require socialiteproviders/twitch

Upvotes: 0

medinazdago
medinazdago

Reputation: 1

I had the same issue, to solve it i change the order of my bootstrap/app.php config, try moving the next lines after the Event ServiceProvider:

$app->register(\SocialiteProviders\Manager\ServiceProvider::class);
class_alias(Laravel\Socialite\Facades\Socialite::class, 'Socialite');
//$app->register(Laravel\Socialite\SocialiteServiceProvider::class);

After:

$app->register(App\Providers\EventServiceProvider::class);

My issue was because i declared all the Socialite and SocialiteProvider stuff before.

Upvotes: 0

Bill Huertas
Bill Huertas

Reputation: 746

Adding an answer here because this question comes up while searching for the same error as it pertains to Lumen as well and I suspect others may run into the same issue that I did.

The Lumen-specific documentation for additional providers doesn't appear to mention some gotchas (at least, for my version of Lumen) and Lumen needs a little extra configuration to work compared to Laravel.

I'm on Lumen 5.8.2 and had been becoming increasingly frustrated getting Socialite with additional providers set up - all of my configuration in bootstrap/app.php and EventServiceProvider.php seemed correct (and was) until I realized that Lumen wasn't actually registering the EventServiceProvider itself.

To remedy this problem, register the EventServiceProvider within your bootstrap/app.php setup:

$app->register(App\Providers\EventServiceProvider::class);

With the EventServiceProvider registered, just refer to the other answers here to configure events, the provider's service config and registering Socialite in app.php and you ought to be good to go.

Upvotes: 1

Adam Patterson
Adam Patterson

Reputation: 689

Make sure that you have updated config/services.php to include the client_id client_secret and redirect from your provider.

Clear your config and try again.

Upvotes: 1

Nathanael
Nathanael

Reputation: 1000

Hopefully this helps someone, but I found that I had to separate the EventServiceProvider.php listen classes with "\\" instead of "\". Laravel 5.6. e.g:

protected $listen = [
    \SocialiteProviders\Manager\SocialiteWasCalled::class => [
        'SocialiteProviders\\Twitch\\TwitchExtendSocialite@handle',
        'SocialiteProviders\\Podio\\PodioExtendSocialite@handle',
    ],

If you're still struggling, triple-check to ensure all of the packages are installed.

I also found that including...

Laravel\Socialite\SocialiteServiceProvider::class,

...in your config/app.php is not necessary when using SocialiteProviders\Manager.

Upvotes: 3

Roman Spiridonov
Roman Spiridonov

Reputation: 436

I had the same issue and I found solution.

In config/app.php providers array:

'providers' => [
    // ...
    Laravel\Socialite\SocialiteServiceProvider::class,
    \SocialiteProviders\Manager\ServiceProvider::class,
    // ...
]

In app/Providers/EventServiceProvider.php:

protected $listen = [
// ...
    \SocialiteProviders\Manager\SocialiteWasCalled::class => [
        'SocialiteProviders\VKontakte\VKontakteExtendSocialite@handle',
    ],
]

You missed \ at start of 'SocialiteProviders\Twitch\TwitchExtendSocialite@handle'.

Upvotes: 12

Related Questions