Laravel 社交名流包中的动态社交应用凭据
Dynamic social app credentials in socialite package in Laravel
我正在尝试构建一个多租户应用程序,我已经在其中配置了数据库和视图文件夹,我知道必须有一些方法可以为社交名流配置社交应用程序登录凭据。好吧,我尝试了一些方法来动态设置它。
第 1 步
我在单独的文件夹中创建了一个名为社交名流的 class,当调用社交登录时,我在我的控制器中实现了以下内容:
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);
}
在我的 class 中,我有以下代码:
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
的名字下做了一个ServiceProvider
并扩展了核心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
。帮我解决这个问题。
谢谢。
在您的第 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();
...
}
我正在尝试构建一个多租户应用程序,我已经在其中配置了数据库和视图文件夹,我知道必须有一些方法可以为社交名流配置社交应用程序登录凭据。好吧,我尝试了一些方法来动态设置它。
第 1 步
我在单独的文件夹中创建了一个名为社交名流的 class,当调用社交登录时,我在我的控制器中实现了以下内容:
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);
}
在我的 class 中,我有以下代码:
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
的名字下做了一个ServiceProvider
并扩展了核心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
。帮我解决这个问题。
谢谢。
在您的第 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();
...
}