2016-10-12 3 views
0

Мне нужно динамически настраивать поставщиков.Динамические конфигурации Laravel Socialite

$config = [ 
    'client_id' = 'xxxxxxx', 
    'client_token' = 'xxxxxxx', 
    'redirect' = 'http://example.com/' 
]; 
return Socialite::with($provider)->setConfig($config)->redirect(); 

Но, к сожалению, нет функции setConfig.

Мне нужно установить провайдера, client_id, client_secret и перенаправлять динамически

Есть ли какие-нибудь идеи?

Спасибо!

ответ

0

Вы можете использовать метод Светская buildProvider как:

$config = [ 
    'client_id' = 'xxxxxxx', 
    'client_token' = 'xxxxxxx', 
    'redirect'  = 'http://example.com/' 
]; 

return Socialite::buildProvider(\Laravel\Socialite\Two\FacebookProvider::class, $config); 

Где \Laravel\Socialite\Two\FacebookProvider::class бы поменять местами с сервисом (если отличается), как это предусмотрено в каждой папке One/Two в https://github.com/laravel/socialite/tree/2.0/src

+0

Thnx, она работает) –

+0

И еще один, я не понимаю, как я могу изменить \ Laravel \ Светская \ Two \ FacebookProvider :: класс услуг, например, если я включил дополнительный провайдер Instagram ... Может вы объясните? –

+0

Вы можете использовать следующий пакет для поставщика Instagram :) http://socialiteproviders.github.io/providers/instagram/ – Ryan

0

я использую следующие поставщика услуг, чтобы автоматически заполнить redirect для каждого провайдера, где он пуст.

Он может быть изменен для обновления конфигурации на лету. Это зависит от того, что вы пытаетесь сделать, я полагаю.

<?php 

namespace App\Providers; 

use Illuminate\Support\ServiceProvider; 

class SocialServiceProvider extends ServiceProvider 
{ 
    /** 
    * Bootstrap any application services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
     collect(config('services')) 
      ->only(config('social.providers')) 
      ->reject(function($config) { 
       return array_get($config, 'redirect', false); 
      }) 
      ->each(function($config, $key) { 
       $url = url("login/{$key}/callback", [], true); 

       config(["services.{$key}.redirect" => $url]); 
      }); 
    } 

    /** 
    * Register any application services. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
    } 
} 
Смежные вопросы