Hybridauth + композитор: как добавить пользовательских провайдеров

Я конвертирую проект php для использования composer в качестве менеджера зависимостей.

Зависимости загружаются через эту строку в моем основном скрипте.

require 'vendor/autoload.php';

Одна из этих зависимостей - hybridauth (версия 2.9). Поскольку при использовании Composer он выдает ошибки "файл не найден" при поиске файлов пользовательских провайдеров.

Например, мой главный контроллер называет Hybrid следующим образом:

$config_file_path = dirname(__FILE__) .'/hybridauth/config.php';
$hybridauth = new Hybrid_Auth( $config_file_path );

Теперь вот файл конфигурации. Я использую провайдера "Facebooktest". Обратите внимание, что мне пришлось указать путь через [обертку][путь]; ключ массива, чтобы перейти к следующему сообщению об ошибке.

return
array(
    "base_url" => WWWROOT."/auth",
    "providers" => array(
        "Facebook" => array(
            "enabled" => true,
            "keys" => array("id" => "xxxxxxx", "secret" => "xxxxxxxx"),
            "scope" => "email",
            "trustForwarded" => false
        ),
        "Facebooktest" => array(
            "enabled" => true,
            "keys" => array("id" => "xxxxxxx", "secret" => "xxxxxx"),
            "scope" => "email",
            "trustForwarded" => false,
            "wrapper"=> array(
                "class"=>'Hybrid_Providers_Facebooktest',
                "path"=> './controllers/hybridauth/Hybrid/Providers/Facebooktest.php'
            )
        )
    ),
    "debug_mode" => false,
    "debug_file" => "",
);

Сообщение об ошибке (с трассировкой):

require_once(/path/to/composer-project/vendor/hybridauth/hybridauth/hybridauth/Hybrid/thirdparty/Facebook/autoload.php): failed to open stream: No such file or directory

[vendor/bcosca/fatfree/lib/base.php:2174] Base->error()
[controllers/hybridauth/Hybrid/Providers/Facebooktest.php:61] Base->{closure}()
[controllers/hybridauth/Hybrid/Providers/Facebooktest.php:61] require_once()
[vendor/hybridauth/hybridauth/hybridauth/Hybrid/Provider_Model.php:99] Hybrid_Providers_Facebooktest->initialize()
[vendor/hybridauth/hybridauth/hybridauth/Hybrid/Provider_Adapter.php:101] Hybrid_Provider_Model->__construct()
[vendor/hybridauth/hybridauth/hybridauth/Hybrid/Auth.php:278] Hybrid_Provider_Adapter->factory()
[vendor/hybridauth/hybridauth/hybridauth/Hybrid/Auth.php:230] Hybrid_Auth::setup()
[controllers/auth-action.get.php:19] Hybrid_Auth::authenticate()

Я нахожу странным, что мне теперь нужно изменить пути внутри проекта vendor / hybridauth /. Это побеждает цель использования менеджера зависимостей. Конечно, я должен делать это неправильно. Вы можете посоветовать?

1 ответ

Проверьте мой ответ на другой вопрос здесь. Если вы недавно установили Hybridauth через composer, вы, вероятно, скачали v2.9.2, которая содержит ошибку в своем классе Facebook, которая заменяет путь вендора с вашего на hybridauth / vendor, вызывая такую ​​проблему.

Я подозреваю, что вы создали этот класс Facebooktest, скопировав их класс Facebook, и поэтому допустили эту ошибку. Либо обновите свою ветку dev и скопируйте этот класс Facebook, либо просто используйте другой класс провайдера в качестве шаблона для своего пользовательского класса провайдера.

Другие вопросы по тегам