驱动程序 [provider] 不支持 laravel/socialite

问题描述 投票:0回答:6

我正在使用 Laravel 5.4 和 Socialite 3.0

我添加的每一个新的社交名流提供商都会收到错误:

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

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

不支持驱动程序[抽搐]。

但是,我可以使用已内置于 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();
});

这是我的 EventServiceProvider 的 $listen:

    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 中的提供者数组中,我已将 Socialite 外观 ('Socialite' => Laravel\Socialite\Facades\Socialite::class,) 添加到我的别名数组中也在 app.php 中,并将适当的密钥添加到我的 .env

laravel laravel-socialite
6个回答
11
投票

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

在 config/app.php 提供程序数组中:

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

在应用程序/Providers/EventServiceProvider.php中:

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

您在“SocialiteProviders\Twitch\TwitchExtendSocialite@handle”开头错过了 \。


3
投票

希望这对某人有帮助,但我发现我必须用“\”而不是“\”分隔 EventServiceProvider.php 监听类。拉拉维尔 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 中添加。


1
投票

确保您已更新

config/services.php
以包含提供商提供的
client_id
client_secret
redirect

清除您的配置并重试。


1
投票

在此处添加答案,因为在搜索与 Lumen 相关的相同错误时出现了这个问题,我怀疑其他人可能会遇到与我相同的问题。

其他提供商的 Lumen 特定文档似乎没有提到一些问题(至少对于我的 Lumen 版本),并且与 Laravel 相比,Lumen 需要一些额外的配置才能工作。

我使用的是 Lumen 5.8.2,并且对设置附加提供商的 Socialite 感到越来越沮丧 - 我在

bootstrap/app.php
EventServiceProvider.php
中的所有配置似乎都是正确的(而且确实是正确的),直到我意识到 Lumen 实际上并不正确注册
EventServiceProvider
本身。

要解决此问题,请在您的

bootstrap/app.php
设置中注册 EventServiceProvider:

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

注册了 EventServiceProvider 后,只需参考此处的其他答案来配置事件、提供商的服务配置并在 app.php 中注册 Socialite,就可以开始了。


0
投票

我遇到了同样的问题,为了解决它,我更改了 bootstrap/app.php 配置的顺序,尝试移动 Event ServiceProvider 之后的下一行:

$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 的内容。


0
投票

我遇到了同样的问题,我的 php 版本是 7,我找到了解决方案。 在 config/app.php 提供程序数组中添加以下两行,然后它就起作用了:

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

确保您已经安装了提供商社交包,在您的情况下它将是:

    composer require socialiteproviders/twitch
© www.soinside.com 2019 - 2024. All rights reserved.