Laravel 5.1社交名流的动态Facebook应用凭据

时间:2015-10-04 13:14:11

标签: facebook laravel laravel-5.1 laravel-socialite

我们正在尝试为Laravel 5.1社交网站使用动态Facebook应用凭据。

  

配置/ 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();
}    

但它没有用。能告诉我们我们如何实现这一目标吗?

感谢。

4 个答案:

答案 0 :(得分:1)

像这样

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

答案 1 :(得分: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();

答案 2 :(得分:0)

只需在您的控制器中使用它

use Laravel\Socialite\Two\FacebookProvider;

配置

   $config = [
        'client_id'    => '969935-d61celu1qck667krmbgql.apps.googlesercontent.com',
        'client_secret' => 'sHrnnOz3Fmz4',
        'redirect'     => 'http://localhost:8000/api/login/facebook/callback'
    ];
  $user=  Socialite::buildProvider(FacebookProvider::class, $config)->stateless();
  return $user->redirect();

回调中的无状态

$userSocial =$config = [
        'client_id'    => '969d61celu1qck667krmbgql.apps.googlesercontent.com',
        'client_secret' => 'sHrnnO3Fmz4',
        'redirect'     => 'http://localhost:8000/api/login/facebook/callback'
    ];
  $user=Socialite::buildProvider(FacebookProvider::class, $config)- 
>stateless()->user();

api 或 web.php

Route::get('login/{provider}', 'SocialController@redirect');
Route::get('login/{provider}/callback','SocialController@Callback');

答案 3 :(得分:-2)

您也可以进行简单的查找和替换。

我们假设你有一个像这样的配置文件

'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);

那就是它,没有什么比这更好的了。