动态Laravel社交网络配置

时间:2016-10-12 12:49:22

标签: php laravel oauth oauth-2.0 laravel-socialite

我需要动态配置我的提供程序。

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

但遗憾的是没有函数setConfig。

我需要设置provider,client_id,client_secret并动态重定向

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用Socialite buildProvider方法,例如:

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

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

https://github.com/laravel/socialite/tree/2.0/src

中的\Laravel\Socialite\Two\FacebookProvider::class / One文件夹中提供的Two与您的服务(如果不同)交换的位置

答案 1 :(得分: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()
    {
    }
}