2017-04-20 11 views
0

Je convertis un projet php pour utiliser composer comme gestionnaire de dépendances.Hybridauth + composer: comment ajouter des fournisseurs personnalisés

Les dépendances sont chargées via cette ligne dans mon script principal.

require 'vendor/autoload.php';

L'une de ces dépendances est hybridauth (version 2.9). Depuis l'utilisation de Composer, il génère des erreurs 'fichier non trouvé' lors de la recherche de fichiers fournisseurs personnalisés.

Par exemple, mon contrôleur principal appelle comme hybride ceci:

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

Maintenant, voici le fichier de configuration. Le fournisseur que j'utilise est "Facebooktest". Notez que j'ai dû spécifier le chemin via le [wrapper] [chemin]; tableau pour arriver au prochain message d'erreur.

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" => "", 
); 

Le message d'erreur (avec trace):

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() 

Je trouve étrange que j'ai besoin maintenant de modifier les chemins à l'intérieur du projet "fournisseur/hybridauth /". Cela va à l'encontre du but de l'utilisation d'un gestionnaire de dépendances. Je dois sûrement me tromper. Pouvez-vous conseiller?

Répondre

1

Check my answer to another question here Si vous avez récemment installé Hybridauth par le compositeur, vous avez probablement téléchargé v2.9.2, qui contiennent un bogue dans leur classe Facebook qui remplacent le chemin du vendeur de la vôtre à hybridauth/fournisseur, ce qui provoque ce problème.

Je suppose que vous avez créé cette classe Facebooktest en copiant leur classe Facebook et que vous avez donc subi cette erreur. Vous pouvez soit mettre à jour leur branche dev et copier cette classe Facebook, soit simplement utiliser une autre classe de fournisseur comme modèle pour votre classe de fournisseur personnalisée.