动态 Laravel 社会名流配置
Dynamic Laravel Socialite Configurations
我需要动态配置我的提供商。
$config = [
'client_id' = 'xxxxxxx',
'client_token' = 'xxxxxxx',
'redirect' = 'http://example.com/'
];
return Socialite::with($provider)->setConfig($config)->redirect();
可惜没有setConfig函数
我需要设置提供商,client_id,client_secret 并动态重定向
有什么想法吗?
谢谢!
您可以使用 Socialite 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
将与 https://github.com/laravel/socialite/tree/2.0/src
中任一文件夹 One
/Two
中提供的服务(如果不同)交换
我使用以下服务提供商,以便为空的每个提供商自动填写 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()
{
}
}
我需要动态配置我的提供商。
$config = [ 'client_id' = 'xxxxxxx', 'client_token' = 'xxxxxxx', 'redirect' = 'http://example.com/' ]; return Socialite::with($provider)->setConfig($config)->redirect();
可惜没有setConfig函数
我需要设置提供商,client_id,client_secret 并动态重定向
有什么想法吗?
谢谢!
您可以使用 Socialite 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
将与 https://github.com/laravel/socialite/tree/2.0/src
One
/Two
中提供的服务(如果不同)交换
我使用以下服务提供商,以便为空的每个提供商自动填写 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()
{
}
}