Laravel 5.1社交名流动态facebook应用证书



我们正在尝试为Laravel 5.1 socialite使用动态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();
}    

但它不起作用。你能告诉我我们如何才能做到这一点吗?

谢谢。

像这样

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

这是我的解决方案。

    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(LaravelSocialiteTwoFacebookProvider::class, $config);
    }

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

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

在你的控制器中使用它

use LaravelSocialiteTwoFacebookProvider;

设置
   $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();

web.php

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

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

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

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

最新更新