使用Lumen登录Facebook PHP SDK 4.0

使用Lumen登录Facebook PHP SDK 4.0,php,facebook,laravel,facebook-sdk-4.0,lumen,Php,Facebook,Laravel,Facebook Sdk 4.0,Lumen,我正在编写一个小应用程序,试图获取一些Facebook信息,但无法使身份验证生效 首先,我使用以下工具设置了AppServiceProvider: FacebookSession::setDefaultApplication(static::APP_ID, static::APP_SECRET); 在我看来,我只有一个按钮,它指向authURL。 auth路由正在使用HomeController@index,其中包含以下内容: public function auth(Request $req

我正在编写一个小应用程序,试图获取一些Facebook信息,但无法使身份验证生效

首先,我使用以下工具设置了
AppServiceProvider

FacebookSession::setDefaultApplication(static::APP_ID, static::APP_SECRET);
在我看来,我只有一个按钮,它指向
auth
URL。
auth
路由正在使用
HomeController@index
,其中包含以下内容:

public function auth(Request $request)
{
    $helper = new FacegroupRedirectLoginHelper($request->url());

    if($session = $helper->getSessionFromRedirect()) {
        dd($session);
    }

    return redirect($helper->getLoginUrl());
}
我已经创建了自己的
Facebook重定向loginhelper
,它扩展了Facebook的基类。这有以下方法,仅用于利用内腔
会话
实现:

protected function storeState($state)
{
    Session::put(static::SESSION_KEY, $state);
}

protected function loadState()
{
    return $this->state = Session::get(static::SESSION_KEY, null);
}

这段代码不知怎么的不起作用,我也看到人们在互联网上这样做。有什么不对劲吗?对于刚接触内腔的人,会话总是
NULL

。为了使会话服务工作,您必须在
引导/app.php
第55行到第61行中启用它

FacebookSDKV5forLaravel在Lumen上运行良好,您只需更改路由即可。。。以下是如何配置和使用带有Lumen的LaravelFacebookSdk

先用

{
    "require": {
        "sammyk/laravel-facebook-sdk": "~3.0"
    }
}
然后在lumen的bootstrap/app.php中添加

// Facebook Sdk Provider
$app->register('SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider');
然后发布配置(请确保您已使用lumen设置了配置文件夹,默认情况下它不在那里)

主要步骤是配置服务提供商和Laravel Facebook Sdk 默认情况下,
LaravelFacebookSdk.php
LaravelUrlDetectionHandler.php
使用
illumb\Routing\UrlGenerator
。您将在供应商src文件夹中找到这些文件,并将其替换为
Laravel\Lumen\Routing\UrlGenerator
。你就完了。(不建议仔细编辑供应商src文件,因为下次调用
composer update
或composer repository上出现新版本时,该文件将被覆盖。这只是测试的一个快速修复方法。放弃它,创建自己的repo或找到方法)

然后你就可以像这样在流明中使用LaravelFacebookSdk了

$app->get('/user', function(SammyK\LaravelFacebookSdk\LaravelFacebookSdk $fb){

    // Get basic info on the user from Facebook.
    try {

        $token = "your-access-token-here";

        $fb->setDefaultAccessToken($token);

        $response = $fb->get('/me?fields=id,name,email');
    } catch (Facebook\Exceptions\FacebookSDKException $e) {
        dd($e->getMessage());
    }

    // Convert the response to a `Facebook/GraphNodes/GraphUser` collection
    $facebook_user = $response->getGraphUser();

    var_dump($facebook_user);

});

php artisan供应商:publish--provider=“SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider”给了我以下错误:php致命错误:调用未定义的函数SammyK\LaravelFacebookSdk\config_path()第22行config_path()上的/usr/share/nginx/emmusion/vendor/sammyk/laravel facebook sdk/src/LaravelFacebookSdk/LaravelFacebookSdkServiceProvider.php中的错误表示没有配置文件夹。创建一个配置文件夹,如果您使用Config,那么不要忘记使用$app->configure('myconfig')加载它@你知道流明5.2是否仍然有效吗?会话支持已删除,所有身份验证都应使用无状态API令牌或标头进行处理。。仅我的2美分:从Lumen 5.2开始,由于Lumen正在演变为一个真正的无状态API框架,会话支持被完全删除。。
$app->get('/user', function(SammyK\LaravelFacebookSdk\LaravelFacebookSdk $fb){

    // Get basic info on the user from Facebook.
    try {

        $token = "your-access-token-here";

        $fb->setDefaultAccessToken($token);

        $response = $fb->get('/me?fields=id,name,email');
    } catch (Facebook\Exceptions\FacebookSDKException $e) {
        dd($e->getMessage());
    }

    // Convert the response to a `Facebook/GraphNodes/GraphUser` collection
    $facebook_user = $response->getGraphUser();

    var_dump($facebook_user);

});