1

我编写了一个小型应用程序,试图获取一些 Facebook 信息,但无法让身份验证正常工作。

起初我已经设置了AppServiceProvider

FacebookSession::setDefaultApplication(static::APP_ID, static::APP_SECRET);

然后在我看来,我只有一个指向authURL 的按钮。
auth路线正在使用HomeController@index,其中包含以下内容:

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

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

    return redirect($helper->getLoginUrl());
}

我创建了自己的FacebookRedirectLoginHelper扩展 Facebook 的基类。这有以下方法,只是为了利用 LumenSession实现:

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

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

此代码无法正常工作,我也看到人们在互联网上这样做。有什么问题?会话始终是NULL.

4

2 回答 2

2

适用于 Laravel 的 Facebook SDK V5 与 Lumen 配合得很好,您只需更改路由……这是您如何配置和使用 LaravelFacebookSdk 与 Lumen

先用

{
    "require": {
        "sammyk/laravel-facebook-sdk": "~3.0"
    }
}

然后在你的 bootstrap/app.php 的 lumen 添加

// Facebook Sdk Provider
$app->register('SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider');

然后发布配置(确保您已使用 lumen 设置了配置文件夹,默认情况下它不存在)

$ php artisan vendor:publish --provider="SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider"

主要步骤是默认配置服务提供者和 Laravel Facebook SdkLaravelFacebookSdk.phpLaravelUrlDetectionHandler.php使用Illuminate\Routing\UrlGenerator. 您将在 vendor src 文件夹中找到这些文件,将其替换为Laravel\Lumen\Routing\UrlGenerator. 你就完成了。(不建议小心编辑供应商 src 文件,因为它会在您下次调用composer update或新版本出现在 composer 存储库时被覆盖。这只是测试的快速修复。fork 它,制作自己的 repo 或找到方法)

然后你就可以像这样在 Lumen 中使用 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);

});
于 2015-09-05T10:03:18.920 回答
1

对于刚接触 Lumen 的人。为了使 Session 服务正常工作,您必须在bootstrap/app.php第 55 行到第 61 行中启用它。

于 2015-04-25T13:39:12.687 回答