我使用的是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
答案 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_secret
和redirect
。
清除您的配置,然后重试。
答案 3 :(得分:0)
在此处添加答案是因为在搜索与流明相同的错误时也会出现此问题,我怀疑其他人可能会遇到与我相同的问题。
其他提供商的Lumen-specific documentation似乎没有提到一些陷阱(至少对于我的Lumen版本而言),与Laravel相比,Lumen需要一些额外的配置才能工作。
我使用的是Lumen 5.8.2,在设置社交网站和其他提供程序的过程中,我变得越来越沮丧-我在bootstrap/app.php
和EventServiceProvider.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的所有内容。