使用Lumen登录Facebook PHP SDK 4.0
我正在编写一个小应用程序,试图获取一些Facebook信息,但无法使身份验证生效 首先,我使用以下工具设置了使用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
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);
});