Интеграция с социальными сетями Laravel 5.5 показывает, что ошибка formatRedirectUrl() должна иметь тип array, задано значение null

Я использую "laravel/socialite": "^3.0" для входа в facebook. Но показывает ошибку

Ошибка типа: Аргумент 1, переданный в Laravel\Socialite\SocialiteManager::formatRedirectUrl(), должен иметь тип array, заданный null, вызываемый в /var/www/html/mas/vendor/laravel/socialite/src/SocialiteManager.php.

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

public function socialLogin($social)
{
    return Socialite::driver($social)->redirect();
}

person Nithin John    schedule 18.11.2017    source источник


Ответы (8)


Привет, вам не хватает учетных данных социальных сетей, поместите их в config/services.php

'facebook' => [
        'client_id' => env('FACEBOOK_CLIENT_ID'),
        'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
        'redirect' => env('CALLBACK_URL_FACEBOOK'),
    ],
    'google' => [
        'client_id' => env('GOOGLE_CLIENT_ID'),
        'client_secret' => env('GOOGLE_CLIENT_SECRET'),
        'redirect' => env('CALLBACK_URL_GOOGLE'),
    ],
    'twitter' => [
        'client_id' => env('TWITTER_CLIENT_ID'),
        'client_secret' => env('TWITTER_CLIENT_SECRET'),
        'redirect' => env('CALLBACK_URL_TWITTER'),
    ],
    'linkedin' => [
        'client_id' => env('LINKEDIN_CLIENT_ID'),
        'client_secret' => env('LINKEDIN_CLIENT_SECRET'),
        'redirect' => env('CALLBACK_URL_LINKEDIN'),
    ],
    'instagram' => [
        'client_id' => env('INSTAGRAM_CLIENT_ID'),
        'client_secret' => env('INSTAGRAM_CLIENT_SECRET'),
        'redirect' => env('CALLBACK_URL_INSTAGRAM'),
    ],
person Jd Patel    schedule 18.11.2017
comment
У меня есть это в моем config/services.php. Но он не может читать из vendor/laravel/socialite/src/SocialiteManager.php . Я могу получить доступ ко всем другим массивам в services.php, кроме учетных данных facebook. Я не знаю, почему. - person Nithin John; 20.11.2017
comment
спасибо, чувак, я пропустил эти учетные данные на живом сервере в файлах config/services.php, теперь все в порядке - person shafeeque ahmad; 04.01.2020

Вы должны очистить файл кеша конфигурации, как? если вы используете php artisan, вы увидите команду config:clear. Запустить его:

php artisan config:clear

и теперь, если вы получите доступ к переменной $config внутри Laravel\Socialite\SocialiteManager::createFacebookDriver(), вы получите элемент конфигурации, хранящийся в config/services.facebook (например, Facebook), который раньше не был «видим» для Socialite .

Короче: запустите php artisan config:clear

person Siro_Diaz    schedule 24.11.2017
comment
В пространстве имен config не определены команды. в просвете - person Ketav; 01.05.2018
comment
Какие растворы для люмена? - person Ketav; 01.05.2018

Это случилось со мной совсем недавно, исправил это после прочтения следующего сообщения здесь, в StackOverflow:

Why do I have to run "composer dump-autoload" command to make migration work in laravel

Решение в основном состоит в том, чтобы запустить следующие команды:

php artisan clear-compiled composer dump-autoload php artisan optimize

person Mike Jimenez    schedule 22.11.2017
comment
сделайте это и поверьте мне, это решит проблему. спасибо - person Abaij; 03.07.2019

Проблема связана с параметрами, передаваемыми в функцию socialLogin($social). Попробуйте вручную установить строку «github» или «facebook» в функции drvier Socialite.

Не забудьте упомянуть «github», «facebook» и т. д. в маршруте в web.php.

person Saif Ansari    schedule 13.06.2018

У меня была такая же проблема.

Я получил эту ошибку из-за копирования/вставки при чтении документа Laravel. В моем случае в loginController.php изменилось это:

// I copied this from Laravel doc
public function redirectToProvider()
{
    return Socialite::driver('github')->redirect();
}

//What I really needed
public function redirectToProvider()
{
    return Socialite::driver('google')->redirect();
}
person Mz1907    schedule 21.04.2019

У меня была такая же проблема даже после того, как я настроил файл config/services.php и сумел решить ее, очистив кеш. В каталоге вашего проекта запустите

php artisan optimize:clear
php artisan cache:clear
php artisan config:clear
php artisan config:cache

Это гарантирует, что весь ваш кеш будет очищен.

ПРИМЕЧАНИЕ: для изменения основных файлов в Laravel в большинстве случаев требуется выполнение вышеуказанных команд, поскольку Laravel имеет тенденцию использовать кэширование в большей степени для повышения скорости приложений.

person Software Developer    schedule 03.03.2020

Попробуйте эти

  1. Проверьте, есть ли у вас все ваши социальные сети в config/services.php
  2. На странице регистрации или входа проверьте URL-адрес, соответствующий facebook.

    a href="{{ url('/login/facebook') }}"

  3. Перейдите в «Маршруты» и проверьте, правильно ли настроены маршруты.

    Route::get('login/{social}', 'Auth\LoginController@redirectToProvider'); Route::get('login/{social}/callback', 'Auth\LoginController@handleProviderCallback');

  4. Откройте Auth/LoginController и проверьте, есть ли

    use Socialite; public function redirectToProvider($social) { Socialite::driver($social)->redirect(); } public function handleProviderCallback($social) { $user = Socialite::driver($social)->user(); }

Как вы упомянули, вы сталкиваетесь с ошибкой только с facebook, я уверен, что это должно быть на первых трех шагах.

person Community    schedule 27.11.2017

Откройте vendor\laravel\socialite\src\SocialiteManager.php Замените на защищенную функцию formatRedirectUrl(array $config) { $redirect = value($config['redirect']);

    return Str::startsWith($redirect, '/')
                ? $this->app['url']->to($redirect)
                : $redirect;
}
person Vijay Verma    schedule 15.11.2019