Facebook PHP SDK 4.0 使用 Lumen 登录
Facebook PHP SDK 4.0 Login with Lumen
我正在编写一个小应用程序,我试图在其中获取一些 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 的基础 class。这有以下方法,只是为了利用 Lumen Session
实现:
protected function storeState($state)
{
Session::put(static::SESSION_KEY, $state);
}
protected function loadState()
{
return $this->state = Session::get(static::SESSION_KEY, null);
}
此代码无法正常工作,我也看到有人在 Internet 上这样做。有什么问题吗?会话总是 NULL
.
对于 Lumen 的新用户。为了使会话服务正常工作,您必须在您的 bootstrap/app.php
行 55 到行 61 中启用它。
适用于 Laravel 的 Facebook SDK V5 与 Lumen 配合良好,您只需更改路由...以下是配置和使用 LaravelFacebookSdk 与 Lumen
的方法
先用
{
"require": {
"sammyk/laravel-facebook-sdk": "~3.0"
}
}
然后在你的bootstrap/app.php of lumen 添加
// Facebook Sdk Provider
$app->register('SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider');
然后发布配置(确保你有带 lumen 的配置文件夹设置,默认情况下它不存在)
$ php artisan vendor:publish --provider="SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider"
主要步骤是配置服务提供商和Laravel Facebook Sdk
默认情况下 LaravelFacebookSdk.php
和 LaravelUrlDetectionHandler.php
使用 Illuminate\Routing\UrlGenerator
。您会在 vendor src 文件夹中找到这些文件,将其替换为 Laravel\Lumen\Routing\UrlGenerator
。你完成了。 (小心编辑供应商 src 文件 不推荐 因为它会在您下次调用时被覆盖 composer update
或新版本出现在作曲家存储库中。这只是测试的快速修复. 分叉它,制作你自己的 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);
});
我正在编写一个小应用程序,我试图在其中获取一些 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 的基础 class。这有以下方法,只是为了利用 Lumen Session
实现:
protected function storeState($state)
{
Session::put(static::SESSION_KEY, $state);
}
protected function loadState()
{
return $this->state = Session::get(static::SESSION_KEY, null);
}
此代码无法正常工作,我也看到有人在 Internet 上这样做。有什么问题吗?会话总是 NULL
.
对于 Lumen 的新用户。为了使会话服务正常工作,您必须在您的 bootstrap/app.php
行 55 到行 61 中启用它。
适用于 Laravel 的 Facebook SDK V5 与 Lumen 配合良好,您只需更改路由...以下是配置和使用 LaravelFacebookSdk 与 Lumen
的方法先用
{
"require": {
"sammyk/laravel-facebook-sdk": "~3.0"
}
}
然后在你的bootstrap/app.php of lumen 添加
// Facebook Sdk Provider
$app->register('SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider');
然后发布配置(确保你有带 lumen 的配置文件夹设置,默认情况下它不存在)
$ php artisan vendor:publish --provider="SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider"
主要步骤是配置服务提供商和Laravel Facebook Sdk
默认情况下 LaravelFacebookSdk.php
和 LaravelUrlDetectionHandler.php
使用 Illuminate\Routing\UrlGenerator
。您会在 vendor src 文件夹中找到这些文件,将其替换为 Laravel\Lumen\Routing\UrlGenerator
。你完成了。 (小心编辑供应商 src 文件 不推荐 因为它会在您下次调用时被覆盖 composer update
或新版本出现在作曲家存储库中。这只是测试的快速修复. 分叉它,制作你自己的 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);
});