2015-10-04 2 views
1

Мы пытаемся использовать динамические учетные данные для facebook для Laravel 5.1 socialite.Динамические учетные данные для facebook для Laravel 5.1 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 динамически? –