Laravel Socialite на Lumen: учетные данные не отправляются

Я пытаюсь реализовать социальный вход в Linkedin, используя laravel/socialite на Lumen. Вот контроллер для первого шага входа:

  public function loginLinkedin()
  {
    return Socialite::driver('linkedin')->redirect();
  }

Учетные данные хранятся в файле конфигурации .env:

LINKEDIN_ID=123whatever
LINKEDIN_SECRET=123whatever
LINKEDIN_URL=http://localhost/linkedin

Когда я перехожу по своей ссылке, контроллер перенаправляет меня на Linkedin, но я просто получаю красный значок с надписью:

Код клиента отсутствует. Для продолжения необходимо предоставить код клиента.

Я подозреваю, что laravel/socialite не может получить мои учетные данные из файла .env. Я что-то пропустил?

Кажется, это общая проблема, связанная с Lumen. Обычно я вижу много пакетов Laravel, содержащих какой-то файл конфигурации "config/blabla.php", но я не понимаю, как безопасно реализовать такую ​​конфигурацию в Lumen.


person Bizarro    schedule 14.10.2015    source источник


Ответы (2)


Благодаря ответу Джозефа я придумал решение - не писать нового менеджера.

Все дело было в возможности прочитать файл конфигурации на Lumen, поскольку микрофреймворк обычно извлекает все данные конфигурации из файла .env.

Первым шагом было отредактировать исходный файл SocialiteManager.php в /vendor/laravel/socialite/src, чтобы получить конфигурацию Linkedin из файла .env с помощью команды getenv(). Это сработало! Я добрался до формы аутентификации Linkedin и смог правильно войти в систему, вернувшись к URL-адресу обратного вызова.

Итак, теперь проблема заключалась в том, чтобы удалить изменения в SocialiteManager.php и сохранить его исходным. Как я мог прочитать файл /config/services.php, где хранилась конфигурация Linkedin?

На помощь пришел следующий пост: https://laracasts.com/discuss/channels/lumen/cant-get-config-data-in-lumen

В нем говорится, что можно загрузить обычные файлы конфигурации Laravel (в /config), выполнив следующие действия:

  • в /bootstrap/app.php раскомментируйте (или добавьте) строку:

    $app->register('App\Providers\AppServiceProvider');

  • в app/Providers/AppServiceProvider.php заполните функцию register():

    public function register() { $this->app->configure('services'); }

И теперь это работает!

person Bizarro    schedule 15.10.2015

Наши Socialite Providers поддерживают Lumen "из коробки" при правильной настройке. Парсим переменные окружения напрямую из .env

person CommandZ    schedule 24.05.2016