Facebook PHP SDK 4.0 使用 Lumen 登录

Posted

技术标签:

【中文标题】Facebook PHP SDK 4.0 使用 Lumen 登录【英文标题】:Facebook PHP SDK 4.0 Login with Lumen 【发布时间】:2015-04-25 12:15:28 【问题描述】:

我编写了一个小型应用程序,试图在其中获取一些 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());

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

protected function storeState($state)

    Session::put(static::SESSION_KEY, $state);


protected function loadState()

    return $this->state = Session::get(static::SESSION_KEY, null);

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

【问题讨论】:

【参考方案1】:

适用于 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');

然后发布配置(确保你有 config 文件夹设置与 lumen ,默认情况下它不存在)

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

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

那么你就可以像这样在 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);

);

【讨论】:

The php artisan vendor:publish --provider="SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider" 给我以下错误: PHP 致命错误:调用未定义函数 SammyK\LaravelFacebookSdk\config_path() in /usr/在第 22 行分享/nginx/amusement/vendor/sammyk/laravel-facebook-sdk/src/LaravelFacebookSdk/LaravelFacebookSdkServiceProvider.php config_path() 错误意味着没有配置文件夹。创建一个 Config 文件夹,如果您使用 config 则不要忘记使用 $app->configure('myconfig'); 加载它 @studentOfWeb 你知道这是否仍然适用于 Lumen 5.2?会话支持已删除,所有身份验证都应使用无状态 API 令牌或标头处理。lumen.laravel.com/docs/5.2/upgrade【参考方案2】:

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

【讨论】:

只需我的 2 美分:从 Lumen 5.2 开始,会话支持已完全删除,因为 Lumen 正在演变为真正的无状态 API 框架。

以上是关于Facebook PHP SDK 4.0 使用 Lumen 登录的主要内容,如果未能解决你的问题,请参考以下文章

PHP Facebook SDK 4.0 作为页面服务器发布到服务器

ParseFacebookUtilsV4 和 Facebook-iOS-SDK 4.0

使用 Facebook SDK 4.0 进行 Android 登录

Android Facebook SDK 4.0 登录:用户登录 Facebook 应用程序时出错

iOS Facebook sdk 4.0 分享图片

任何示例显示如何使用自己的按钮或 Facebook 按钮在 Android 中使用 Facebook SDK 4.0 登录?