2015-10-04 42 views
1

我们正在尝试使用Laravel 5.1 socialite的动态facebook应用凭证。Laravel 5.1 socialite的动态facebook应用凭据socialite

配置/ services.php

'facebook' => [ 
    'client_id' => 'xxxx', 
    'client_secret' => 'xxxx', 
    'redirect' => 'http://example.com/facebook-callback', 
], 

在我的控制文件:

public function getConnectFacebook() 
{ 
    return Socialite::driver('facebook')->redirect(); 
} 

public function getFacebookCallback() 
{ 
    $user = Socialite::driver('facebook')->user();   
} 

我们试图覆盖facebook的驱动程序是这样的:

public function getConnectFacebook() 
{ 
    Config::Set("services.facebook.client_id", "dynamic_app_id"); 
    Config::Set("services.facebook.client_secret", "dynamic_app_secret"); 
    Config::Set("services.facebook.redirect", "dynamic_app_redirect");   
    return Socialite::driver('facebook')->redirect(); 
}  

但它没有工作。请让我知道我们如何实现这一目标?

谢谢。

回答

0

这是我的解决方案。

private function makeFacebookDriver($domain){ 
//grab and set your config values from database or array. Don't do Config::Set. 
$config['client_id'] = '';//grab fb id based from db based on domain 
      $config['client_secret'] = '';//grab fb secret from db based on domain 
      $config['redirect'] = 'http://'.$domain.'/fbcallback'; 
      return Socialite::buildProvider(\Laravel\Socialite\Two\FacebookProvider::class, $config); 
    } 

然后使用函数,而不是调用Socialite :: driver('Facebook');

$fb = $this->makeFacebookDriver('www.test.com'); 
return $fb->redirect(); 
+0

通话过程中如何实现背部。我的意思是它重定向罚款,而回调它再次获取配置服务文件。 –

0

你也可以做一个简单的查找和替换。

比方说,你有这样的

'facebook' => [ 
    'client_id' => '{ID}', 
    'client_secret' => '{SECRET}', 
    'redirect' => '{REDIRECT}', 
], 

配置文件现在你的控制器中,你可以做这样的事情。

$fileName = 'path/to/file.php'; 

$configData = file_get_contents($file); 

$configData = str_replace('{ID}','dynamic_id',$configData); 
$configData = str_replace('{SECRET}','dynamic_secret',$configData); 
$configData = str_replace('{REDIRECT}','dynamic_link',$configData); 

file_put_contents($file, $configData); 

就是这样,没有什么奇怪的。

1

这样

return Socialite::driver('facebook')->redirect()->setTargetUrl('your callback url'); 
+0

如何动态设置client_id和client_secret? –

相关问题