Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 动态拉威尔社会名流构型_Php_Laravel_Oauth_Oauth 2.0_Laravel Socialite - Fatal编程技术网

Php 动态拉威尔社会名流构型

Php 动态拉威尔社会名流构型,php,laravel,oauth,oauth-2.0,laravel-socialite,Php,Laravel,Oauth,Oauth 2.0,Laravel Socialite,我需要动态配置我的提供者 但不幸的是,没有函数setConfig 我需要设置提供者、客户端id、客户端机密和动态重定向 有什么想法吗 谢谢大家! 您可以使用社交名媛buildProvider方法,如: $config = [ 'client_id' = 'xxxxxxx', 'client_token' = 'xxxxxxx', 'redirect' = 'http://example.com/' ]; return Socialite::buildPro

我需要动态配置我的提供者

但不幸的是,没有函数setConfig

我需要设置提供者、客户端id、客户端机密和动态重定向

有什么想法吗


谢谢大家!

您可以使用社交名媛
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
中的任何一个文件夹中提供的,我使用以下服务提供程序为每个空的提供程序自动填写
重定向

可以修改它以动态更新您的配置。我想这完全取决于你想做什么

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

还有一点,我不明白如何更改\Laravel\Socialite\Two\FacebookProvider::class服务,例如,如果我包含了其他instagram提供商。。。你能解释一下吗?你可以为Instagram提供商使用以下软件包:)我明白了,它可以工作。当我设置\Laravel\Socialite\One\TwitterProvider::classs时,我遇到了一个新问题。抱歉,我明白了,它是有效的。当我设置\Laravel\Socialite\One\TwitterProvider::class时,我遇到了一个新问题-它返回错误“类型错误:传递给Laravel\Socialite\One\AbstractProvider的参数2::\uu construct()必须是League\OAuth1\Client\Server\Server的实例,字符串给定,在第92行的/home/vagrant/Code/my project/vendor/laravel/socialite/src/SocialiteManager.php中调用,并且\laravel\socialite\One\BitbucketProvider::class相同的错误调用回调时这不起作用,它使UnAutoRead 401错误,也请考虑同时改变URL动态。
<?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()
    {
    }
}