2015-10-04 96 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? –

相關問題