我正在使用Laravel 4,并通过composer加载了hybridauth,使其在Facebook和Twitter上运行良好。现在我正试图让它与Steam一起工作,Steam被列为一个额外的提供商,但我一直收到以下错误:
require_eonce(vendor/hybridauth/hybridauth/hybridauth/Providers/Steam.php)[function.request once]:无法打开流:没有这样的文件或目录
很明显,它找错了地方,实际的类位于这个位置:
vendor/hybyauth/hybyaauth/additional providers/hybyaAuth-stam/providers/steam.php
关于这一点,我能找到的文档很少,我唯一的猜测是,hybridauth的作者只提供了这些额外的提供者作为可选的额外提供者,并希望您将类的位置移动到适当的位置,但对于composer,这不是一种做事情的方式,并且在我运行composer更新时会引起问题。
我在谷歌上找不到有类似问题的人,这看起来很奇怪,所以我担心我错过了明显的问题。在Composer中使用hybridauth时,有没有一种方法可以使用额外的提供程序,让它们自动加载?
我能想到的唯一解决方案是在尝试自动加载之前手动包含正确的文件。我不介意这样做,但我认为必须有一种正确的方法来做到这一点,否则使用Composer和Hybridauth是相当无用的。
我在Instagram上遇到了这个问题,并且能够使用包装器语法,这在这里有记录http://hybridauth.sourceforge.net/userguide/tuts/specific-provider-wrapper.html
下面的代码让Instagram适配器为我工作。
"Instagram" => array (
"enabled" => true,
"keys" => array (
"id" => xxxx,
"secret" => xxxx,
),
"wrapper" => array(
'class'=>'Hybrid_Providers_Instagram',
'path' => $_SERVER['DOCUMENT_ROOT'].'/../vendor/hybridauth/hybridauth/additional-providers/hybridauth-instagram/Providers/Instagram.php'
)
),
如果您阅读hybridauth/Hybrid/Provider_Adapter.php第69行的源代码,您会看到它在使用标准路径执行require_one之前对此进行了检查。
我也搜索了很多。我所能想到的是,它是在没有框架的情况下使用的,然后被移植到Composer中使用,但"附加提供者"文件夹没有加载,或者其他什么。这有点糟糕。
我刚刚把文件复制到另一个目录中,现在一切都正常了。
这可能对你很方便。。。
http://blog.elliothesp.co.uk/coding/laravel-4-and-hybrid-auth/
关于此部分:
Copy the Steam.php file, located at:
laravel/vendor/hybridauth/hybridauth/additional-providers/hybridauth-steam/Providers/Steam.php
Over to:
laravel/vendor/hybridauth/hybridauth/hybridauth/Hybrid/Providers/
我不知道为什么库会把它们分开,这对我来说没有任何意义。