驱动程序[提供者]不支持laravel / socialite

时间:2017-08-07 20:14:36

标签: laravel laravel-socialite

我使用的是Laravel 5.4和Socialite 3.0

我添加的每个新社交网站提供商都会收到错误:

  

不支持驱动程序[提供者]。

例如,当添加socialiteproviders / twitch 3.0时,我会收到错误:

  

不支持驱动程序[twitch]。

但是,我可以使用已经内置于Socialite的提供程序,例如github按预期工作。

我尝试了三种不同的提供者,每次都得到相同的结果,我做错了什么?

以下是我的路线:

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();
});

这是我的$ listen来自我的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',
      ],
    ];

我已将SocialiteProviders \ Manager \ ServiceProvider :: class添加到app.php中的providers数组中,我添加了Socialite外观(' Socialite' => Laravel \ Socialite \ Facades \ Socialite: :class,)我的别名数组也在app.php中,并已将相应的键添加到我的.env

5 个答案:

答案 0 :(得分:4)

我有同样的问题,我找到了解决方案。

在config / app.php providers数组中:

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

在app / Providers / EventServiceProvider.php中:

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

你在'SocialiteProviders \ Twitch \ TwitchExtendSocialite @ handle'开始时错过了。

答案 1 :(得分:0)

希望这对某人有帮助,但是我发现我必须用“ \\”而不是“ \”分隔EventServiceProvider.php侦听类。 Laravel 5.6。例如:

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

如果您仍在挣扎,请进行三次检查以确保所有软件包都已安装。

我还发现其中包括...

Laravel\Socialite\SocialiteServiceProvider::class,
使用SocialiteProviders \ Manager时,不需要config / app.php中的

...。

答案 2 :(得分:0)

请确保您已更新config/services.php,以包括提供商中的client_id client_secretredirect

清除您的配置,然后重试。

答案 3 :(得分:0)

在此处添加答案是因为在搜索与流明相同的错误时也会出现此问题,我怀疑其他人可能会遇到与我相同的问题。

其他提供商的Lumen-specific documentation似乎没有提到一些陷阱(至少对于我的Lumen版本而言),与Laravel相比,Lumen需要一些额外的配置才能工作。

我使用的是Lumen 5.8.2,在设置社交网站和其他提供程序的过程中,我变得越来越沮丧-我在bootstrap/app.phpEventServiceProvider.php中的所有配置似乎都是正确的,并且直到我意识到流明实际上并没有注册EventServiceProvider本身。

要解决此问题,请在bootstrap/app.php设置中注册EventServiceProvider:

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

在注册了EventServiceProvider后,只需参考此处的其他答案即可配置事件,提供程序的服务配置并在app.php中注册Socialite,您应该一切顺利。

答案 4 :(得分:0)

我遇到了同样的问题,要解决此问题,我更改了bootstrap / app.php配置的顺序,尝试移动事件服务提供商之后的下一行:

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

之后:

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

我的问题是因为我之前已经声明了Socialite和SocialiteProvider的所有内容。