![](/img/trans.png)
[英]Lumen + Socialite - Laravel\Socialite\Contracts\Factory is not instantiable
[英]Unable to use Laravel / Socialite with Lumen
我嘗試在流明 (5.1)的系統中使用軟件包Laravel \\ Socialite
我將此添加到config\\services.php
文件中:
<?php
//Socialite
'facebook' => [
'client_id' => '##################',
'client_secret' => '##################',
'redirect' => 'http://local.dev/admin/facebook/callback',
],
在bootstrap\\app.php
文件中:
class_alias(Laravel\Socialite\Facades\Socialite::class, 'Socialite');
$app->register(Laravel\Socialite\SocialiteServiceProvider::class);
然后我創建了一個用於facebook身份驗證的控制器:
<?php
namespace App\Http\Controllers\Facebook;
use App\Http\Controllers\Controller;
use Laravel\Socialite\Contracts\Factory as Socialite;
class FacebookController extends Controller
{
public function redirectToProviderAdmin()
{
return Socialite::driver('facebook')->scopes(['manage_pages', 'publish_actions'])->redirect();
}
public function handleProviderCallbackAdmin()
{
$user = Socialite::driver('facebook')->user();
}
}
並在routes.php
:
$app->get('/admin/facebook/login', 'App\Http\Controllers\Facebook\FacebookController@redirectToProviderAdmin');
$app->get('/admin/facebook/callback', 'App\Http\Controllers\Facebook\FacebookController@handleProviderCallbackAdmin');
我只是遵循文檔,根據需要進行更改。 當我轉到頁面http://local.dev/admin/facebook/login
,出現以下錯誤:
非靜態方法Laravel \\ Socialite \\ Contracts \\ Factory :: driver()不能被靜態調用,假設$ this來自不兼容的上下文
確實,根據代碼, 驅動程序功能必須實例化。
編輯 :如果我嘗試實例化此類,則會出現以下錯誤:
無法實例化界面Laravel \\ Socialite \\ Contracts \\ Factory
您如何使該模塊正常工作?
這就是我的情況
在services.php文件中
'facebook' => [
'client_id' => '***************',
'client_secret' => '***************',
'redirect' => ""
],
我將重定向留空了,因為我的網站是多語言的(因此,稍后會填充會話)。 如果僅使用一種語言,則在其中放置您的回調絕對路徑。 例如
"http://example.com:8000/my-callback/";
還要檢查您的config / app.php。 在提供者數組中
Laravel\Socialite\SocialiteServiceProvider::class,
在別名數組中
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
我的路線看起來像這樣
Route::get('facebook', 'Auth\AuthController@redirectToProvider');
Route::get('callback', 'Auth\AuthController@handleProviderCallback');
這是auth控制器方法。 放在最前面
use Socialite;
//იობანი როტ
public function redirectToProvider(Request $request)
{
return Socialite::with('facebook')->redirect();
}
public function handleProviderCallback(Request $request)
{
//here you hadle input user data
$user = Socialite::with('facebook')->user();
}
giga.com:8000是我的本地主機(因此它是相同的本地主機:8000)
正如您在有效OAuth重定向URI中看到的那樣,您應該在其中放置回調。 在我的情況下,我使用三個網址,因為我有三種語言。 在你的情況下應該只是
http://your-domain-name.com:8000/callback
如果您在localhost上工作,則應在config / services.php中命名您的域,如下所示
'domain' => "your-domain.com",
一切運行完這些命令后
php artisan cache:clear
php artisan view:clear
composer dump-autoload
重新啟動服務器,清除瀏覽器cookie。 希望能幫助到你
我找到了此錯誤的原因。 根本不寫
use Laravel\Socialite\Contracts\Factory as Socialite;
但
use Socialite;
然后,我再次陷入了擔憂。 我仍然准確地說,我的答案僅與Lumen有關 ,因為該文檔是為Laravel創建的。
他們告訴我們創建config\\services.php
文件並輸入應用程序密碼。 不要這樣做,因為永遠不會在任何地方調用此文件。
但是,您必須在bootstrap\\app.php
文件中添加標識符,如下所示:
config(['services' => [
'facebook' => [
'client_id' => '##################',
'client_secret' => '##################',
'redirect' => 'http://local.dev/admin/facebook/callback',
],
]]);
驗證: Laravel\\Socialite\\SocialiteManager.php
文件中的facebook方法:
protected function createFacebookDriver()
{
dd($config = $this->app['config']['services']);
return $this->buildProvider(
'Laravel\Socialite\Two\FacebookProvider', $config
);
}
此代碼調用app > config > services
。 所以上面的配置是正確的。 經過測試,一切正常!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.