2017-02-10 34 views
2

我試圖構建一個多租戶應用程序,在那裏我已經配置了數據庫,視圖文件夾,我知道一定是有出路來配置社會應用的登錄憑據爲社交名流。那麼我嘗試了幾件事情來動態設置它。動態的社會應用程序憑據Laravel

STEP 1

我創建了社交名媛的名稱的類在一個單獨的文件夾,當社會登錄叫我執行在我的控制器以下幾點:

public function redirectSocialLogin() 
{ 
    $social = new SocialiteProvider(); 
    $fb = $social->makeFacebookDriver(); 
    return $fb->redirect(); 
} 

和而回調我用以下:

public function callbackSocialLogin($media) 
{ 
    $user = Socialite::driver($media)->user(); 
    $data['name'] = $user->getName(); 
    $data['email'] = $user->getEmail(); 
    dd($data); 
} 

在我的課堂我有以下代碼:

public function makeFacebookDriver() 
{ 
    $config['client_id'] = 'XXXXXXXXXXXXXXX'; 
    $config['client_secret'] = 'XXXXXXXXXXXXXXX'; 
    $config['redirect'] = 'http://XXXXXXXXXXXX/auth/facebook/callback'; 
    return Socialite::buildProvider('\Laravel\Socialite\Two\FacebookProvider', $config); 
} 

它完全重定向到社交頁面,但在獲取回調時出現錯誤,它再次獲取services.php文件進行配置,但沒有得到任何迴應。

STEP 2

我做了一個ServiceProviderSocialiteServiceProvider名下並擴展了核心SocialiteServiceProvider,放在下面的代碼:

protected function createFacebookDriver() 
{ 
    $config['client_id'] = 'XXXXXXXXXXXXXXX'; 
    $config['client_secret'] = 'XXXXXXXXXXXXXXXXXXXX'; 
    $config['redirect'] = 'http://XXXXXXXXXXX/auth/facebook/callback'; 

    return $this->buildProvider(
     'Laravel\Socialite\Two\FacebookProvider', $config 
    ); 
} 

但它再次拋出回錯誤,說:driver is not setup。幫我解決這個問題。 謝謝。

回答

1

在你STEP 1,更新回調下面提到&嘗試。 $media實際上是Request。所以初始化Socialite::driver($media)當你實際上是通過Request,你必須通過Facebook

public function callbackSocialLogin(Request $request) { 
    $fbDriver = (new SocialiteProvider())->makeFacebookDriver(); 

    $user = $fbDriver->user(); 
    $data['name'] = $user->getName(); 
    $data['email'] = $user->getEmail(); 
    ... 
} 
+0

是的我正在這樣做'$媒體'和您的解決方案工作。我忘記實施的傻的東西。非常感謝。乾杯。 –