gpt4 book ai didi

php - 无法在 Lumen 中使用 Laravel/Socialite

转载 作者:行者123 更新时间:2023-12-04 14:12:57 27 4
gpt4 key购买 nike

我尝试使用包 Laravel\Socialite在我的系统中 Lumen (5.1)

我在 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 身份验证创建了一个 Controller :
<?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 ,我收到以下错误:

Non-static method Laravel\Socialite\Contracts\Factory::driver() cannot be called statically, assuming $this from incompatible context



确实,根据代码, driver function必须是实例化的。

编辑 :如果我尝试实例化这个类,我会收到以下错误:

Cannot instantiate interface Laravel\Socialite\Contracts\Factory



你如何使这个模块工作?

最佳答案

这是在我的情况下的工作原理

在 services.php 文件中

 'facebook' => [
'client_id' => '***************',
'client_secret' => '***************',
'redirect' => ""
],

我将重定向留空,因为我的网站是多语言的(因此,它稍后会用 session 填充)。如果您只使用一种语言,请将您的回调绝对路径放在那里。例如
"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');

这是身份验证 Controller 方法。放在上面
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();

}

我的 Facebook 应用
fb_settings

giga.com:8000 是我的本地主机(所以它是相同的本地主机:8000)

fb_settings2

fb_settings3

正如您在 Valid 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。希望能帮助到你

关于php - 无法在 Lumen 中使用 Laravel/Socialite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35536548/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com