我正在尝试构建一个多租户应用程序,在那里我已经配置了数据库,视图文件夹,我知道必须有一些方法来配置社交应用程序登录凭证。我尝试了很少的东西来动态地设置它。
步骤1
我在一个单独的文件夹中创建了一个名为socialite的类,当名为社会化登录时,我将在我的控制器中实现以下内容:
public function redirectSocialLogin()
{
$social = new SocialiteProvider();
$fb = $social->makeFacebookDriver();
return $fb->redirect();
}在回调过程中,我使用了以下方法:
public function callbackSocialLogin($media)
{
$user = Socialite::driver($media)->user();
$data['name'] = $user->getName();
$data['email'] = $user->getEmail();
dd($data);
}在我的课堂上,我遵循了密码:
public function makeFacebookDriver()
{
$config['client_id'] = 'XXXXXXXXXXXXXXX';
$config['client_secret'] = 'XXXXXXXXXXXXXXX';
$config['redirect'] = 'http://XXXXXXXXXXXX/auth/facebook/callback';
return Socialite::buildProvider('\Laravel\Socialite\Two\FacebookProvider', $config);
}它完全重定向到社交页面,但当得到回调时,我得到一个错误,它再次获取services.php文件以进行配置,但没有得到任何文件。
步骤2
我以SocialiteServiceProvider的名义创建了一个SocialiteServiceProvider,并扩展了核心SocialiteServiceProvider,并放置了以下代码:
protected function createFacebookDriver()
{
$config['client_id'] = 'XXXXXXXXXXXXXXX';
$config['client_secret'] = 'XXXXXXXXXXXXXXXXXXXX';
$config['redirect'] = 'http://XXXXXXXXXXX/auth/facebook/callback';
return $this->buildProvider(
'Laravel\Socialite\Two\FacebookProvider', $config
);
}但是,它再次抛出错误,上面写着driver is not setup。帮我解决这个问题。谢谢。
发布于 2017-02-10 04:09:21
在步骤1中,按照下面提到的方法更新回调&尝试。$media实际上是Request。因此,当初始化Socialite::driver($media)时,实际上是传递Request,而必须通过Facebook。
public function callbackSocialLogin(Request $request) {
$fbDriver = (new SocialiteProvider())->makeFacebookDriver();
$user = $fbDriver->user();
$data['name'] = $user->getName();
$data['email'] = $user->getEmail();
...
}https://stackoverflow.com/questions/42150999
复制相似问题