【问题标题】:Dynamic social app credentials in socialite package in LaravelLaravel 社交名流包中的动态社交应用凭据
【发布时间】:2017-02-10 03:28:45
【问题描述】:

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

第 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的名字下做了一个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。帮我解决这个问题。 谢谢。

【问题讨论】:

  • Nitish kumar,你能在里面显示吗(新的 SocialiteProvider()),我尝试了很多,我找不到合适的文章来实现动态 client_id ,secret_key.what is inside your SocialiteProvider()。

标签: laravel laravel-socialite laravel-5.4


【解决方案1】:

在您的 STEP 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();
    ...
}

【讨论】:

  • 是的,我正在为$media 这样做,并且您的解决方案有效。我忘记实施的愚蠢的事情。非常感谢。干杯。
  • SocialiteProvider()里面应该如何配置?
猜你喜欢
  • 2016-01-01
  • 2017-02-21
  • 1970-01-01
  • 2016-01-13
  • 2015-08-20
  • 2021-02-10
  • 2016-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多