动态 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()
    {
    }
}