Laravel社交名媛包中的动态社交应用程序凭据

Laravel社交名媛包中的动态社交应用程序凭据,laravel,laravel-socialite,laravel-5.4,Laravel,Laravel Socialite,Laravel 5.4,我正在尝试构建一个多租户应用程序,我已经在其中配置了数据库、视图文件夹,我知道一定有办法为社交名流配置社交应用程序登录的凭据。我尝试了一些方法来动态设置它 步骤1 我在一个单独的文件夹中创建了一个名为Socialist的类,当调用social登录时,我在我的控制器中实现了以下功能: public function redirectSocialLogin() { $social = new SocialiteProvider(); $fb = $social->makeFac

我正在尝试构建一个多租户应用程序,我已经在其中配置了数据库、视图文件夹,我知道一定有办法为社交名流配置社交应用程序登录的凭据。我尝试了一些方法来动态设置它

步骤1

我在一个单独的文件夹中创建了一个名为Socialist的类,当调用social登录时,我在我的控制器中实现了以下功能:

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);
}
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
    );
}
它可以完美地重定向到社交页面,但当收到回调时,我发现一个错误,它再次获取services.php文件进行配置,但没有得到任何响应

步骤2

我以
SocialiteServiceProvider
的名义创建了一个
ServiceProvider
,扩展了核心
SocialiteServiceProvider
,并放置了以下代码:

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);
}
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
    );
}
但它再次抛出错误,即
驱动程序未设置
。帮我解决这个问题。
谢谢。

在您的步骤1中,按以下所述更新回调并重试
$media
实际上是
请求
。因此,当初始化社交名媛::driver($media)时,您实际上是在传递
请求
您必须通过的
Facebook

public function callbackSocialLogin(Request $request) {
    $fbDriver = (new SocialiteProvider())->makeFacebookDriver();

    $user = $fbDriver->user();
    $data['name']  = $user->getName();
    $data['email'] = $user->getEmail();
    ...
}

是的,我这样做是为了
$media
,您的解决方案奏效了。我忘记实施的愚蠢的事情。谢谢。干杯。应该如何配置内部SocialProvider()?Nitish kumar,你能展示内部吗(新的SocialProvider()),我尝试了很多,我找不到合适的文章来实现动态客户端id、密钥。你的SocialProvider()中有什么内容。