我正在使用 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
我遇到了同样的问题,我找到了解决方案。
在 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”开头错过了 \。
希望这对某人有帮助,但我发现我必须用“\”而不是“\”分隔 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 中添加。
确保您已更新
config/services.php
以包含提供商提供的 client_id
client_secret
和 redirect
。
清除您的配置并重试。
在此处添加答案,因为在搜索与 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,就可以开始了。
我遇到了同样的问题,为了解决它,我更改了 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 的内容。
我遇到了同样的问题,我的 php 版本是 7,我找到了解决方案。 在 config/app.php 提供程序数组中添加以下两行,然后它就起作用了:
Laravel\Socialite\SocialiteServiceProvider::class,
\SocialiteProviders\Manager\ServiceProvider::class,
确保您已经安装了提供商社交包,在您的情况下它将是:
composer require socialiteproviders/twitch