Laravel中的社交网络包中的动态社交应用凭据

时间:2017-02-10 03:28:45

标签: laravel laravel-socialite laravel-5.4

我正在尝试构建一个多租户应用,我配置了数据库,views文件夹,我知道必须有一些出路来配置社交应用登录社交网站的凭据。好吧,我尝试了一些动态设置的东西。

第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步

我在ServiceProvider的名义下创建了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的错误。帮助我解决这个问题。 感谢。

1 个答案:

答案 0 :(得分:1)

第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();
    ...
}